import os import subprocess import tarfile import glob BACKUP_REPO = os.environ.get("BACKUP_REPO") HF_TOKEN = os.environ.get("HF_TOKEN") if not BACKUP_REPO or not HF_TOKEN: print("[Restore] Skipping: BACKUP_REPO or HF_TOKEN not set") exit(0) env = os.environ.copy() env["HF_HOME"] = "/tmp/hf_cache" env["XDG_CACHE_HOME"] = "/tmp/xdg_cache" env["TMPDIR"] = "/tmp" env["HF_TOKEN"] = HF_TOKEN os.makedirs(env["HF_HOME"], exist_ok=True) os.makedirs(env["XDG_CACHE_HOME"], exist_ok=True) os.makedirs(env["TMPDIR"], exist_ok=True) print("[Restore] Restoring workspace...") subprocess.run( ["hf", "download", BACKUP_REPO, "--repo-type", "dataset", "--local-dir", "/home/vscode", "--force-download", "--exclude", ".gitattributes", "--exclude", "*.md", "--include", "workspace/*"], check=True, env=env ) print("[Restore] Checking for latest config archive...") subprocess.run( ["hf", "download", BACKUP_REPO, "--repo-type", "dataset", "--local-dir", "/tmp/configs", "--include", "configs/*"], check=False, env=env ) archives = sorted(glob.glob("/tmp/configs/configs_*.tar.gz")) if archives: latest = archives[-1] print(f"[Restore] Extracting {latest}...") with tarfile.open(latest, "r:gz") as tar: tar.extractall(path="/home/vscode") print("[Restore] Configs restored.") else: print("[Restore] No config backups found.") print("[Restore] Completed.")