Skip to content

Repository files, collaboration, releases and project activity.

ARCHFORGE HISTORY

Blame · migrate-archforge-remote.sh

Branch main · the Commit author is not necessarily a verified ArchForge account.

2109dd33b8archadmin2026-10-121 #!/usr/bin/env bash
2109dd33b8archadmin2026-10-122 set -Eeuo pipefail
2109dd33b8archadmin2026-10-123 ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)
2109dd33b8archadmin2026-10-124 cd "$ROOT"
2109dd33b8archadmin2026-10-125 ENV_FILE=/etc/archforge-status/status.env
2109dd33b8archadmin2026-10-126 if [[ "${1:-}" == '--env-only' ]]; then
2109dd33b8archadmin2026-10-127  [[ "$EUID" == 0 ]] || { echo '[ERROR] Run env update with sudo.' >&2; exit 1; }
2109dd33b8archadmin2026-10-128  [[ -f "$ENV_FILE" ]] || { echo '[INFO] No existing status.env file found.'; exit 0; }
2109dd33b8archadmin2026-10-129  if ! grep -Eq '^TARGET_GIT_HTTP_URL=https://archforge\.nl/[A-Za-z0-9_-]+/[A-Za-z0-9_-]+\.git/info/refs$' "$ENV_FILE"; then
2109dd33b8archadmin2026-10-1210  echo '[INFO] ArchForge HTTPS monitor already updated or not configured.'; exit 0
2109dd33b8archadmin2026-10-1211  fi
2109dd33b8archadmin2026-10-1212  bak="$ENV_FILE.before-archforge-$(date -u +%Y%m%d%H%M%S)"
2109dd33b8archadmin2026-10-1213  cp -p -- "$ENV_FILE" "$bak"
2109dd33b8archadmin2026-10-1214  python3 - "$ENV_FILE" <<'PYIN'
2109dd33b8archadmin2026-10-1215 import pathlib,re,sys,os
2109dd33b8archadmin2026-10-1216 p=pathlib.Path(sys.argv[1])
2109dd33b8archadmin2026-10-1217 s=p.read_text()
2109dd33b8archadmin2026-10-1218 s,n=re.subn(r'(?m)^(TARGET_GIT_HTTP_URL=https://archforge\.nl/[A-Za-z0-9_-]+/[A-Za-z0-9_-]+)\.git(/info/refs)$',r'\1.archforge\2',s)
2109dd33b8archadmin2026-10-1219 if n != 1: raise SystemExit('Unexpected ArchForge HTTPS target format; not changing file')
2109dd33b8archadmin2026-10-1220 p.write_text(s)
2109dd33b8archadmin2026-10-1221 PYIN
2109dd33b8archadmin2026-10-1222  chmod 600 "$ENV_FILE"
2109dd33b8archadmin2026-10-1223  systemctl restart archforge-status
2109dd33b8archadmin2026-10-1224  echo '[OK] ArchForge HTTPS monitoring endpoint changed to .archforge.'
2109dd33b8archadmin2026-10-1225  exit 0
2109dd33b8archadmin2026-10-1226 fi
2109dd33b8archadmin2026-10-1227 [[ -d .git ]] || { echo '[ERROR] Run from a ArchForge checkout, not a copied installation.' >&2; exit 1; }
2109dd33b8archadmin2026-10-1228 CURRENT=$(git remote get-url origin)
2109dd33b8archadmin2026-10-1229 if [[ "$CURRENT" =~ ^https://archforge\.nl/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+\.git$ || "$CURRENT" =~ ^git@archforge\.nl:[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+\.git$ ]]; then
2109dd33b8archadmin2026-10-1230  NEXT="${CURRENT%.git}.archforge"
2109dd33b8archadmin2026-10-1231  echo "Old remote: $CURRENT"
2109dd33b8archadmin2026-10-1232  echo "New remote: $NEXT"
2109dd33b8archadmin2026-10-1233  echo 'Checking the NEW ArchForge endpoint first (requires ArchForge Website 11.3.7)...'
2109dd33b8archadmin2026-10-1234  if ! git ls-remote "$NEXT" HEAD >/dev/null; then
2109dd33b8archadmin2026-10-1235  echo '[ERROR] New .archforge ArchForge endpoint is not accessible. Remote unchanged.' >&2; exit 1
2109dd33b8archadmin2026-10-1236  fi
2109dd33b8archadmin2026-10-1237  git remote set-url origin "$NEXT"
2109dd33b8archadmin2026-10-1238  echo '[OK] Local origin updated without touching commits or working files.'
2109dd33b8archadmin2026-10-1239 elif [[ "$CURRENT" =~ ^https://archforge\.nl/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+\.archforge$ || "$CURRENT" =~ ^git@archforge\.nl:[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+\.archforge$ ]]; then
2109dd33b8archadmin2026-10-1240  echo '[OK] Origin already uses .archforge.'
2109dd33b8archadmin2026-10-1241 else
2109dd33b8archadmin2026-10-1242  echo '[ERROR] Remote is not a recognized safe ArchForge URL. No modifications made.' >&2; exit 1
2109dd33b8archadmin2026-10-1243 fi
2109dd33b8archadmin2026-10-1244 if [[ $EUID == 0 ]]; then
2109dd33b8archadmin2026-10-1245  bash "$0" --env-only
2109dd33b8archadmin2026-10-1246 else
2109dd33b8archadmin2026-10-1247  echo 'To change an existing ArchForge HTTPS probe target (if configured), run:'
2109dd33b8archadmin2026-10-1248  echo " sudo bash $ROOT/migrate-archforge-remote.sh --env-only"
2109dd33b8archadmin2026-10-1249 fi