Spaces:
Running
Running
| """ | |
| Deploy ROCmPort AI to a Hugging Face Space. | |
| Usage: | |
| python scripts/deploy_to_hf.py --token hf_xxxx --username nawangdorjay | |
| The script will: | |
| 1. Create the Space (Gradio SDK, public) if it doesn't exist | |
| 2. Push the repo contents to the Space via huggingface_hub upload_folder | |
| """ | |
| from __future__ import annotations | |
| import argparse | |
| import sys | |
| from pathlib import Path | |
| REPO_ROOT = Path(__file__).resolve().parents[1] | |
| SPACE_NAME = "rocmport-ai" | |
| EXCLUDE_PATTERNS = [ | |
| ".venv", | |
| "venv", | |
| "__pycache__", | |
| ".pytest_cache", | |
| "pytest-cache-files-*", | |
| "artifacts/runtime", | |
| ".git", | |
| ".tmp", | |
| ".gradio", | |
| "*.pyc", | |
| "*.pyo", | |
| ] | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(description="Deploy ROCmPort AI to HF Spaces") | |
| parser.add_argument("--token", required=True, help="Hugging Face write token (hf_...)") | |
| parser.add_argument("--username", required=True, help="Hugging Face username or org name") | |
| parser.add_argument("--space-name", default=SPACE_NAME, help=f"Space name (default: {SPACE_NAME})") | |
| args = parser.parse_args() | |
| try: | |
| from huggingface_hub import HfApi | |
| except ImportError: | |
| print("ERROR: huggingface_hub is not installed. Run: pip install huggingface_hub") | |
| sys.exit(1) | |
| api = HfApi(token=args.token) | |
| repo_id = f"{args.username}/{args.space_name}" | |
| # --- 1. Create Space if it doesn't exist --- | |
| try: | |
| api.repo_info(repo_id=repo_id, repo_type="space") | |
| print(f"Space already exists: https://huggingface.co/spaces/{repo_id}") | |
| except Exception: | |
| print(f"Creating Space: {repo_id} ...") | |
| api.create_repo( | |
| repo_id=repo_id, | |
| repo_type="space", | |
| space_sdk="gradio", | |
| private=False, | |
| exist_ok=True, | |
| ) | |
| print(f"Space created: https://huggingface.co/spaces/{repo_id}") | |
| # --- 2. Upload all files --- | |
| print(f"Uploading from {REPO_ROOT} ...") | |
| api.upload_folder( | |
| folder_path=str(REPO_ROOT), | |
| repo_id=repo_id, | |
| repo_type="space", | |
| ignore_patterns=EXCLUDE_PATTERNS, | |
| commit_message="Deploy ROCmPort AI — CUDA-to-ROCm migration scanner", | |
| ) | |
| print(f"\nDeployed! https://huggingface.co/spaces/{repo_id}") | |
| print(" It may take 1-2 minutes for the Space to build and come online.") | |
| if __name__ == "__main__": | |
| main() | |