OC_P8 / scripts /deploy_dashboard.py
KLEB38's picture
Upload folder using huggingface_hub
f1ef656 verified
Raw
History Blame Contribute Delete
1.77 kB
"""One-shot deploy of dashboard/ to HF Space KLEB38/OC_P8_monitoring.
Same pattern as the API deploy (cf .github/workflows/ci.yml).
"""
from __future__ import annotations
import logging
import os
import sys
from pathlib import Path
logger = logging.getLogger("scripts.deploy_dashboard")
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s")
REPO_ROOT = Path(__file__).resolve().parents[1]
DASHBOARD_DIR = REPO_ROOT / "dashboard"
REPO_ID = os.getenv("OC_P8_MONITORING_REPO", "KLEB38/OC_P8_monitoring")
def _load_env_file() -> None:
"""Load ``database/.env`` if present so HF_TOKEN can live there alongside
DATABASE_URL. Silent no-op if python-dotenv is missing or the file is
absent (CI uses real env vars and never ships the .env)."""
try:
from dotenv import load_dotenv
except ImportError:
return
env_path = REPO_ROOT / "database" / ".env"
if env_path.exists():
load_dotenv(env_path)
def main() -> int:
_load_env_file()
token = os.getenv("HF_TOKEN")
if not token:
logger.error(
"HF_TOKEN not set; aborting. "
"Add it to database/.env or export it before running."
)
return 1
if not DASHBOARD_DIR.exists():
logger.error("Dashboard folder missing: %s", DASHBOARD_DIR)
return 1
from huggingface_hub import HfApi
api = HfApi(token=token)
logger.info("Uploading %s -> %s", DASHBOARD_DIR, REPO_ID)
api.upload_folder(
folder_path=str(DASHBOARD_DIR),
repo_id=REPO_ID,
repo_type="space",
ignore_patterns=["__pycache__", "*.pyc", ".pytest_cache", ".venv"],
)
logger.info("Dashboard deployed.")
return 0
if __name__ == "__main__":
sys.exit(main())