e6d1ebd152
gates / gates (push) Successful in 28s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
56 lines
2.2 KiB
Python
56 lines
2.2 KiB
Python
#!/usr/bin/env python3
|
|
"""repoint.py drill|restore — point scratch guest 9202 at the DRILL catalog, or back at the live one (`09` §6.5; R-615:
|
|
the cache directory goes too). Saved config: controller.yaml.pre-familygate1002. Three controls printed each way."""
|
|
import io, re, subprocess, sys
|
|
import walk as w
|
|
VOL = "/var/lib/docker/volumes/felhom-controller-data/_data"
|
|
SAVE = f"{VOL}/controller.yaml.pre-familygate1002"
|
|
DRILL_REPO = "https://gitea.dooplex.hu/admin/app-catalog-drill.git"
|
|
|
|
|
|
def creds():
|
|
for l in io.open("/home/kisfenyo/.git-credentials").read().strip().split("\n"):
|
|
m = re.match(r'https://(admin):([^@]+)@gitea\.dooplex\.hu', l)
|
|
if m:
|
|
return m.group(1), m.group(2)
|
|
raise SystemExit("no admin credential")
|
|
|
|
|
|
def controls(want):
|
|
print("CONTROL 1 — the box's clone:", w.guest(f"cd {VOL}/data/catalog-cache && git log --oneline -1 && git remote get-url origin | sed 's#//[^@]*@#//#'").strip())
|
|
print("CONTROL 2 — live main:", subprocess.run(["git", "ls-remote", "https://gitea.dooplex.hu/admin/app-catalog-felhom.eu.git", "refs/heads/main"], capture_output=True, text=True).stdout.split()[:1])
|
|
print("CONTROL 3 — expected:", want)
|
|
|
|
|
|
if sys.argv[1] == "drill":
|
|
u, t = creds()
|
|
print(w.guest(f"""
|
|
set -e
|
|
test -f {SAVE} || cp -p {VOL}/controller.yaml {SAVE}
|
|
python3 - <<'PY'
|
|
import re
|
|
p = "{VOL}/controller.yaml"
|
|
s = open(p).read()
|
|
s = re.sub(r'(^\\s+repo_url: ).*$', r'\\g<1>{DRILL_REPO}', s, count=1, flags=re.M)
|
|
s = re.sub(r'(^git:(?:\\n\\s+.*)*?\\n\\s+token: ).*$', r'\\g<1>"{t}"', s, count=1, flags=re.M)
|
|
s = re.sub(r'(^git:(?:\\n\\s+.*)*?\\n\\s+username: ).*$', r'\\g<1>"{u}"', s, count=1, flags=re.M)
|
|
open(p, "w").write(s)
|
|
PY
|
|
rm -rf {VOL}/catalog-cache {VOL}/data/catalog-cache
|
|
docker restart felhom-controller >/dev/null
|
|
sleep 20
|
|
grep -A6 '^git:' {VOL}/controller.yaml | sed 's/token:.*/token: <redacted>/'
|
|
"""))
|
|
else:
|
|
print(w.guest(f"""
|
|
set -e
|
|
cp -p {SAVE} {VOL}/controller.yaml
|
|
rm -rf {VOL}/catalog-cache {VOL}/data/catalog-cache
|
|
docker restart felhom-controller >/dev/null
|
|
sleep 20
|
|
grep -A6 '^git:' {VOL}/controller.yaml | sed 's/token:.*/token: <redacted>/'
|
|
"""))
|
|
w.login()
|
|
w.sync_rescan()
|
|
controls(sys.argv[1])
|