|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +set -euo pipefail |
| 4 | + |
| 5 | +PERSIST_DIR="/mnt/persistence-data" |
| 6 | +PERSIST_POST_CREATE="/usr/local/share/persistence_post_create" |
| 7 | + |
| 8 | +cat > "$PERSIST_POST_CREATE" << EOF |
| 9 | +#!/usr/bin/env bash |
| 10 | +
|
| 11 | +SUDO_CMD="" |
| 12 | +[ "\${USER}" != "root" ] && SUDO_CMD="sudo" |
| 13 | +
|
| 14 | +EOF |
| 15 | + |
| 16 | +IFS=':' read -ra PATH_ARRAY <<< "${PATHS}" |
| 17 | +for path in "${PATH_ARRAY[@]}"; do |
| 18 | + [[ -z "${path}" ]] && continue |
| 19 | + |
| 20 | + path="${path/#\~/${_REMOTE_USER_HOME}}" |
| 21 | + path="${path/#\$HOME/${_REMOTE_USER_HOME}}" |
| 22 | + |
| 23 | + original_path=$(realpath -m "${path}") |
| 24 | + safe_name="${original_path//\//_}" |
| 25 | + persist_path="${PERSIST_DIR}/${safe_name#_}" |
| 26 | + |
| 27 | + # Add directory creation to post-create |
| 28 | + echo "Setting up ${path}" >> "${PERSIST_POST_CREATE}" |
| 29 | + echo "\${SUDO_CMD} mkdir -p \"${persist_path}\"" >> "${PERSIST_POST_CREATE}" |
| 30 | + |
| 31 | + parent_dir="$(dirname "${original_path}")" |
| 32 | + mkdir -p "${parent_dir}" |
| 33 | + |
| 34 | + if [[ -d "${original_path}" ]]; then |
| 35 | + mv "${original_path}" "${original_path}.backup" |
| 36 | + fi |
| 37 | + |
| 38 | + ln -s "${persist_path}" "${original_path}" |
| 39 | + |
| 40 | + echo "\${SUDO_CMD} chown -R \$USER \"${parent_dir}\"" >> "${PERSIST_POST_CREATE}" |
| 41 | +done |
| 42 | + |
| 43 | +cat >> "$PERSIST_POST_CREATE" << EOF |
| 44 | +
|
| 45 | +echo "Setting owner for ${PERSIST_DIR} to \${USER}" |
| 46 | +\${SUDO_CMD} chown -R \$USER "${PERSIST_DIR}" |
| 47 | +
|
| 48 | +EOF |
| 49 | + |
| 50 | +chmod +x "${PERSIST_POST_CREATE}" |
0 commit comments