#!/usr/bin/env bash # Deploy this static Space to Hugging Face. # # ./deploy.sh # # Example: # ./deploy.sh swnesbitt us-tornado-density # # Create the Space first at https://huggingface.co/new-space with SDK: Static. # When git asks for a password, paste a WRITE token from # https://huggingface.co/settings/tokens (not your account password). set -euo pipefail HF_USER="${1:-}" HF_SPACE="${2:-}" if [[ -z "$HF_USER" || -z "$HF_SPACE" ]]; then echo "usage: ./deploy.sh " >&2 exit 1 fi cd "$(dirname "$0")" echo "==> Deploying $(pwd)" echo " to https://huggingface.co/spaces/$HF_USER/$HF_SPACE" echo # A previous attempt left a half-initialized repo that git cannot reuse, and any # earlier commit still contains the binaries Hugging Face rejected. Start clean. if [[ -d .git ]]; then echo "==> Removing existing .git (starting from a clean history)" rm -rf .git fi echo "==> Building the commit" git init -q git add -A git -c user.email="${GIT_AUTHOR_EMAIL:-$(git config --global user.email || echo you@example.com)}" \ -c user.name="${GIT_AUTHOR_NAME:-$(git config --global user.name || echo deploy)}" \ commit -q -m "Annual tornado density browser, 1950-2026" git branch -M main # Guard: nothing binary should reach Hugging Face's pre-receive hook. echo "==> Checking for files HF would reject" if git ls-files | grep -qE '\.u8$|\.u16$'; then echo " ERROR: raw binary arrays are staged; check .gitignore" >&2 exit 1 fi BIN=0 while IFS= read -r f; do if LC_ALL=C grep -qI . "$f" 2>/dev/null; then :; else BIN=$((BIN+1)); echo " binary: $f"; fi done < <(git ls-files) echo " $(git ls-files | wc -l | tr -d ' ') files staged, $BIN binary" if [[ $BIN -gt 0 ]]; then echo " WARNING: binary files present. If the push is rejected, either run" >&2 echo " 'git lfs install' and re-run, or add them to .gitignore." >&2 fi echo "==> Pushing" git remote remove hf 2>/dev/null || true git remote add hf "https://huggingface.co/spaces/$HF_USER/$HF_SPACE" git push hf main --force echo echo "==> Done. Open https://huggingface.co/spaces/$HF_USER/$HF_SPACE" echo " Hard-refresh with Cmd-Shift-R if it looks stale."