from __future__ import annotations import os from pathlib import Path from huggingface_hub import HfApi REQUIRED_ENV = ["HF_TOKEN", "HF_SPACE_ID", "KAGGLE_USERNAME", "KAGGLE_API_TOKEN"] def main() -> None: missing = [name for name in REQUIRED_ENV if not os.environ.get(name)] if missing: raise SystemExit(f"Missing required environment variables: {', '.join(missing)}") project_root = Path(__file__).resolve().parents[1] repo_id = os.environ["HF_SPACE_ID"] token = os.environ["HF_TOKEN"] api = HfApi(token=token) api.create_repo( repo_id=repo_id, repo_type="space", space_sdk="docker", private=True, exist_ok=True, ) secrets = { "PORT": "7860", "GENERATION_PROVIDER": "kaggle", "COMMERCIAL_MODE": "1", "FLUX_MODEL_ID": os.environ.get("FLUX_MODEL_ID", "black-forest-labs/FLUX.2-klein-4B"), "KAGGLE_COMMAND": "kaggle", "KAGGLE_USERNAME": os.environ["KAGGLE_USERNAME"], "KAGGLE_API_TOKEN": os.environ["KAGGLE_API_TOKEN"], "KAGGLE_ACCELERATOR": os.environ.get("KAGGLE_ACCELERATOR", "NvidiaTeslaT4"), "KAGGLE_USE_SMALL_DECODER": os.environ.get("KAGGLE_USE_SMALL_DECODER", "0"), "KAGGLE_INFERENCE_STEPS": os.environ.get("KAGGLE_INFERENCE_STEPS", "4"), "KAGGLE_CACHE_KERNEL_REF": os.environ.get("KAGGLE_CACHE_KERNEL_REF", "jolvangeest/mplus-flux2-cache"), "KAGGLE_POLL_INTERVAL_MS": os.environ.get("KAGGLE_POLL_INTERVAL_MS", "5000"), "KAGGLE_POLL_TIMEOUT_MS": os.environ.get("KAGGLE_POLL_TIMEOUT_MS", "7200000"), } for key, value in secrets.items(): api.add_space_secret(repo_id=repo_id, key=key, value=value) api.upload_folder( repo_id=repo_id, repo_type="space", folder_path=str(project_root), commit_message="Deploy Mplus Studio", ignore_patterns=[ ".git/*", ".angular/*", ".kaggle-work/*", ".env", "backend/dist/*", "backend/node_modules/*", "dist/*", "graphify-out/*", "node_modules/*", "test-results/*", ], ) print(f"Deployed to https://huggingface.co/spaces/{repo_id}") if __name__ == "__main__": main()