#!/usr/bin/env bash
# Maintain authoritative test_map against a target branch HEAD.
#
# Required:
# MSMODELING_TEST_MAP_PATH Path to test_map JSON file (read/write)
#
# Optional (defaults below):
# MSMODELING_TEST_BASE_BRANCH fallback target branch (default: master)
# MSMODELING_TEST_MAP_TARGET_BRANCH explicit sync target (overrides base branch)
# MSMODELING_TEST_MAP_SYNC_INTERVAL poll interval seconds for --watch (default: 60)
# MSMODELING_OFFLINE Hub offline mode (default: 0)
# MSMODELING_CACHE optional repo-local Hub cache
# PYTHON absolute path to interpreter; if unset, uses uv or python3
#
# Usage:
# bash scripts/run_test_map_sync.sh --once
# bash scripts/run_test_map_sync.sh --watch
#
# OBS upload/download remains external; this script only updates the local file.
# Sync self-heals: missing/invalid map or broken ancestry → full rebuild.
# Uses ephemeral branch msmodeling-sync/<pid>; cleaned up on exit.
set -euo pipefail
if [[ -z "${MSMODELING_TEST_MAP_PATH:-}" ]]; then
echo "Error: MSMODELING_TEST_MAP_PATH is required for run_test_map_sync.sh" >&2
exit 1
fi
export MSMODELING_TEST_WEIGHTS_PRUNE="${MSMODELING_TEST_WEIGHTS_PRUNE:-0}"
export MSMODELING_OFFLINE="${MSMODELING_OFFLINE:-0}"
export MSMODELING_TEST_BASE_BRANCH="${MSMODELING_TEST_BASE_BRANCH:-master}"
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
# shellcheck source=lib/common.sh
source "${SCRIPT_DIR}/lib/common.sh"
run_py "${HELPERS_DIR}/ci_gate/sync.py" "$@"