#!/usr/bin/env bash
set -Eeuo pipefail
TARGET='/opt/router-ops/bin/router-machine-close'; CONTRACT_LIB='/opt/router-ops/lib/router-machine-close-contract.sh'; SELFTEST='/opt/router-ops/bin/router-machine-close-contract-selftest'; BACKUP_DIR='/opt/router-ops/steps/20260716-173824_STEP_050M07R15C_ROUTER_MACHINE_CLOSE_CONTRACT_FIX_R02/rollback-files'
LATEST_LOCAL='/opt/router-ops/public/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/latest'; OLD_LOCAL='/opt/router-ops/public/r/e94a0859747d7b96f29c7fdafc2d0351ba603bb0a7e9e5a4/old'; NEW_FILE='/opt/router-ops/steps/20260716-173824_STEP_050M07R15C_ROUTER_MACHINE_CLOSE_CONTRACT_FIX_R02/new-source-folder.txt'; PREV_FILE='/opt/router-ops/steps/20260716-173824_STEP_050M07R15C_ROUTER_MACHINE_CLOSE_CONTRACT_FIX_R02/previous-vm130-source-folders.txt'; REINDEX='/opt/router-ops/bin/router-public-reindex'
cp -a "$BACKUP_DIR/router-machine-close" "$TARGET.tmp.rollback"; mv -f "$TARGET.tmp.rollback" "$TARGET"
if [[ -f "$BACKUP_DIR/router-machine-close-contract.sh" ]]; then cp -a "$BACKUP_DIR/router-machine-close-contract.sh" "$CONTRACT_LIB.tmp.rollback"; mv -f "$CONTRACT_LIB.tmp.rollback" "$CONTRACT_LIB"; else rm -f "$CONTRACT_LIB"; fi
if [[ -f "$BACKUP_DIR/router-machine-close-contract-selftest" ]]; then cp -a "$BACKUP_DIR/router-machine-close-contract-selftest" "$SELFTEST.tmp.rollback"; mv -f "$SELFTEST.tmp.rollback" "$SELFTEST"; else rm -f "$SELFTEST"; fi
if [[ -s "$NEW_FILE" ]]; then NEW="$(cat "$NEW_FILE")"; CURRENT="$(find "$LATEST_LOCAL" -mindepth 1 -maxdepth 1 -type d -name '*_vm130_router_ops_source_snapshot*' -printf '%f\n')"; if [[ "$CURRENT" == "$NEW" ]]; then mv "$LATEST_LOCAL/$NEW" "$OLD_LOCAL/$NEW"; while IFS= read -r P; do [[ -n "$P" && -d "$OLD_LOCAL/$P" ]] && mv "$OLD_LOCAL/$P" "$LATEST_LOCAL/$P"; done < "$PREV_FILE"; "$REINDEX"; else echo PUBLICATION_ROLLBACK=SKIPPED_NEWER_SOURCE_PRESENT; fi; fi
echo RESULT=PASS_R15C_ROLLBACK
