| 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.") |
|
|