#!/usr/bin/env bash
set -Eeuo pipefail
BASE="/opt/router-ops"
BACKUP="/opt/router-ops/steps/20260715-210235_STEP_DIRECT_HTTPS_PUBLICATION_PIPELINE_FIX_R05D/rollback/original"
TOKEN="e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4"
LATEST="/opt/router-ops/public/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/latest"
OLD="/opt/router-ops/public/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/old"
ORIG_STEP_FOLDER="20260715-195710_step_vm130_publication_pipeline_targeted_snapshot_r05b2"
ORIG_VM130_FOLDER="20260714-085433_vm130_router_ops_source_snapshot_r13f"
ORIG_ACCESS_FOLDER="20260714-092500_access_map_canonical_current"
NEW_STEP_FOLDER="20260715-210237_step_direct_https_publisher_pipeline_fix_r05d"
NEW_VM130_FOLDER="20260715-210236_vm130_router_ops_source_snapshot_r05d"
NEW_ACCESS_FOLDER="20260715-210236_access_map_canonical_current"
move_new_to_old() {
    local folder="$1" ts
    [ -n "$folder" ] || return 0
    [ -d "$LATEST/$folder" ] || return 0
    if [ -e "$OLD/$folder" ]; then
        ts="$(date -u +%Y%m%d-%H%M%S)"
        mv "$LATEST/$folder" "$OLD/${ts}_rollback_$folder"
    else
        mv "$LATEST/$folder" "$OLD/$folder"
    fi
}
restore_old_to_latest() {
    local folder="$1"
    [ -n "$folder" ] || return 0
    if [ -d "$OLD/$folder" ] && [ ! -e "$LATEST/$folder" ]; then
        mv "$OLD/$folder" "$LATEST/$folder"
    fi
}
move_new_to_old "$NEW_STEP_FOLDER"
move_new_to_old "$NEW_ACCESS_FOLDER"
move_new_to_old "$NEW_VM130_FOLDER"
restore_old_to_latest "$ORIG_STEP_FOLDER"
restore_old_to_latest "$ORIG_ACCESS_FOLDER"
restore_old_to_latest "$ORIG_VM130_FOLDER"
for rel in \
    opt/router-ops/bin/router-publish-report \
    opt/router-ops/bin/router-public-reindex \
    opt/router-ops/bin/router-public-url \
    opt/router-ops/bin/router-vm100-git-source-publish \
    opt/router-ops/bin/router-vm101-git-source-publish \
    opt/router-ops/bin/router-vm121-git-source-publish \
    opt/router-ops/bin/router-machine-close \
    opt/router-ops/state/current-vm100-git-source.env \
    opt/router-ops/state/current-vm101-git-source.env \
    opt/router-ops/state/current-vm121-git-source.env \
    opt/router-ops/state/current-machine-close-vm100.env \
    opt/router-ops/state/current-machine-close-vm101.env \
    opt/router-ops/state/current-machine-close-vm121.env \
    opt/router-ops/inventory/access-map.md
 do
    cp -a "$BACKUP/$rel" "/$rel"
 done
sudo -n install -o root -g root -m 0644 "$BACKUP/etc/caddy/Caddyfile" /etc/caddy/Caddyfile
sudo -n caddy validate --config /etc/caddy/Caddyfile
sudo -n systemctl reload caddy
/opt/router-ops/bin/router-public-reindex
printf 'RESULT=PASS_R05D_ROLLBACK\n'
printf 'RUNTIME_IMPACT=true\n'
printf 'TRAFFIC_INTERRUPTION=none\n'
