yashprmr/MeridianFinancial
0
1#!/usr/bin/env bash2# scripts/deploy_dashboard.sh3# ----------------------------4# Deploy the Meridian Financial Streamlit dashboard to HuggingFace Spaces.5#6# ACTIVE DEPLOYMENT TARGET: HuggingFace Spaces7# FUTURE/PLANNED TARGET: AWS ECS / AppRunner (see docs/deployment.md)8#9# Usage:10# HF_TOKEN=hf_xxx HF_DASH_SPACE=your-username/meridian-dashboard bash scripts/deploy_dashboard.sh11#12# Environment variables:13# HF_TOKEN — HuggingFace write token (required)14# HF_DASH_SPACE — HF Space repo ID, e.g. bottyash/meridian-dashboard15# API_BASE_URL — FastAPI backend URL to bake into the Space16# COMMIT_MSG — Optional custom commit message17 18set -euo pipefail19 20# ---------------------------------------------------------------------------21# Config22# ---------------------------------------------------------------------------23HF_TOKEN="${HF_TOKEN:-}"24HF_DASH_SPACE="${HF_DASH_SPACE:-bottyash/meridian-dashboard}"25API_BASE_URL="${API_BASE_URL:-https://bottyash-meridian-api.hf.space}"26COMMIT_MSG="${COMMIT_MSG:-Deploy dashboard from local}"27REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"28 29# ---------------------------------------------------------------------------30# Validation31# ---------------------------------------------------------------------------32if [[ -z "$HF_TOKEN" ]]; then33 echo "ERROR: HF_TOKEN environment variable is required."34 echo " export HF_TOKEN=hf_your_token_here"35 exit 136fi37 38command -v python3 >/dev/null 2>&1 || { echo "ERROR: python3 not found"; exit 1; }39python3 -c "import huggingface_hub" 2>/dev/null || pip install huggingface_hub -q40 41# ---------------------------------------------------------------------------42# Deploy dashboard to HF Spaces43# ---------------------------------------------------------------------------44echo ""45echo "Deploying dashboard to HuggingFace Spaces: $HF_DASH_SPACE"46echo "API_BASE_URL = $API_BASE_URL"47 48python3 - << PYEOF49import os50from huggingface_hub import HfApi51 52api = HfApi(token=os.environ["HF_TOKEN"])53space_id = os.environ["HF_DASH_SPACE"]54commit_msg = os.environ.get("COMMIT_MSG", "Deploy dashboard")55 56# Upload entire dashboard/ folder57api.upload_folder(58 folder_path="dashboard",59 repo_id=space_id,60 repo_type="space",61 ignore_patterns=["*.pyc", "__pycache__", ".pytest_cache"],62 commit_message=commit_msg,63)64 65# Update the Space secret API_BASE_URL if provided66api_url = os.environ.get("API_BASE_URL", "")67if api_url:68 try:69 api.add_space_secret(repo_id=space_id, key="API_BASE_URL", value=api_url)70 print(f"Space secret API_BASE_URL set to: {api_url}")71 except Exception as e:72 print(f"Could not set API_BASE_URL secret: {e}")73 74print(f"Dashboard deployed: https://huggingface.co/spaces/{space_id}")75PYEOF76 77echo ""78echo "Done. Dashboard deployed to: https://huggingface.co/spaces/$HF_DASH_SPACE"79echo "API backend URL configured: $API_BASE_URL"80 