| """Deploy current working tree to the HF Space via HfApi.upload_folder. |
| |
| Bypasses git push (and macOS keychain credential issues). Uses the locally |
| configured HF token. Run after committing locally if you want git history |
| on GitHub to match what's on the Space. |
| """ |
|
|
| from __future__ import annotations |
|
|
| import shutil |
| import subprocess |
| import tempfile |
| from pathlib import Path |
|
|
| from huggingface_hub import HfApi |
|
|
| REPO_ID = "lablab-ai-amd-developer-hackathon/recap" |
| ROOT = Path(__file__).resolve().parent.parent |
|
|
| IGNORE = { |
| ".git", ".venv", "venv", "env", |
| "__pycache__", ".pytest_cache", |
| "docs", "node_modules", |
| ".DS_Store", |
| } |
|
|
|
|
| def _build_hf_readme(staging: Path) -> None: |
| """Concatenate space/header.md + README.md into staging/README.md.""" |
| header = (ROOT / "space" / "header.md").read_text() |
| body = (ROOT / "README.md").read_text() |
| if body.startswith("---\n"): |
| end = body.find("\n---\n", 4) |
| body = body[end + 5:].lstrip() if end != -1 else body |
| (staging / "README.md").write_text(header + body) |
|
|
|
|
| def _copy_to_staging(staging: Path) -> None: |
| for entry in ROOT.iterdir(): |
| if entry.name in IGNORE: |
| continue |
| dst = staging / entry.name |
| if entry.is_dir(): |
| shutil.copytree(entry, dst, ignore=shutil.ignore_patterns(*IGNORE)) |
| else: |
| shutil.copy2(entry, dst) |
|
|
|
|
| def main() -> None: |
| api = HfApi() |
|
|
| with tempfile.TemporaryDirectory() as tmp: |
| staging = Path(tmp) |
| _copy_to_staging(staging) |
| _build_hf_readme(staging) |
|
|
| rev_short = subprocess.run( |
| ["git", "rev-parse", "--short", "HEAD"], |
| cwd=ROOT, capture_output=True, text=True, check=False, |
| ).stdout.strip() |
| commit_msg = f"deploy: sync from {rev_short or 'local'}" |
|
|
| print(f"Uploading {len(list(staging.rglob('*')))} entries to {REPO_ID}…") |
| api.upload_folder( |
| folder_path=str(staging), |
| repo_id=REPO_ID, |
| repo_type="space", |
| commit_message=commit_msg, |
| ) |
|
|
| print(f"Done. https://huggingface.co/spaces/{REPO_ID}") |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|