#!/usr/bin/env bash
# migrate/retire -- archive the previous panel's files
#
# Only the previous panel's own paths are touched. The shared directory
# /etc/nhanhvps is kept, because the running product keeps its configuration
# and secrets there.
set -o pipefail
SELF=$(readlink -f "${BASH_SOURCE[0]}")
NV_BASE=$(cd "$(dirname "$SELF")/../../.." && pwd)
export NV_BASE
# shellcheck source=/dev/null
. "$NV_BASE/lib/core/bootstrap.sh"

nv_require_root || exit 1
ui_header "$(t mig_m_retire)"

legacy=(/opt/nhanhvps /etc/nhanhvps/menu /etc/nhanhvps/nhanhvps /usr/local/bin/nhanhvps)
present=()
for p in "${legacy[@]}"; do [ -e "$p" ] && present+=("$p"); done

if [ ${#present[@]} -eq 0 ]; then
    ui_ok "$(t mig_retire_none)"
    exit 0
fi

ui_section "$(t mig_retire_will)"
for p in "${present[@]}"; do printf '  %s\n' "$p"; done
ui_blank
ui_warn "$(t mig_retire_warn)"
ui_info "$(t mig_retire_keep)"
ui_blank

printf '  %s: ' "$(t mig_retire_prompt)"
read -r answer || exit 130
[ "$answer" = "ARCHIVE" ] || { ui_info "$(t pf_cancelled)"; exit 3; }

archive="$NV_BACKUP_ROOT/$(date -u '+%Y%m%dT%H%M%SZ').legacy"
install -d -m 0700 "$archive"

for p in "${present[@]}"; do
    name=$(printf '%s' "$p" | sed 's|^/||; s|/|_|g')
    tar czf "$archive/$name.tar.gz" -C / "${p#/}" 2>/dev/null \
        && ui_ok "$(t mig_retire_archived "$(basename "$archive/$name.tar.gz")")" \
        || { ui_err "$(t mig_retire_archive_failed "$p")"; exit 1; }
done

for p in "${present[@]}"; do
    rm -rf "$p"
done
nv_trace migrate-retire "archived ${#present[@]} path(s) to $archive"

ui_blank
ui_ok "$(t mig_retire_done "$archive")"
ui_info "$(t mig_retire_note)"
exit 0
