| #!/usr/bin/env bash |
| set -euo pipefail |
|
|
| ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
| source "$ROOT_DIR/scripts/venv_utils.sh" |
|
|
| ENV_DIR="$ROOT_DIR" |
| REPO_ID="${HF_SPACE_REPO_ID:-your-hf-username/polyguard-openenv}" |
| DO_BUILD="true" |
| DO_VALIDATE="true" |
| CREATE_PR="false" |
| DRY_RUN="false" |
| PRIVATE="${HF_SPACE_PRIVATE:-false}" |
| IMAGE_TAG="${HF_SPACE_IMAGE_TAG:-openenv-polyguard:latest}" |
|
|
| while [[ $# -gt 0 ]]; do |
| case "$1" in |
| --repo-id) |
| REPO_ID="$2" |
| shift 2 |
| ;; |
| --env-dir) |
| ENV_DIR="$2" |
| shift 2 |
| ;; |
| --skip-build) |
| DO_BUILD="false" |
| shift |
| ;; |
| --skip-validate) |
| DO_VALIDATE="false" |
| shift |
| ;; |
| --create-pr) |
| CREATE_PR="true" |
| shift |
| ;; |
| --dry-run) |
| DRY_RUN="true" |
| shift |
| ;; |
| --private) |
| PRIVATE="true" |
| shift |
| ;; |
| --help|-h) |
| cat <<'USAGE' |
| Usage: bash scripts/deploy_space.sh [options] |
|
|
| Options: |
| --repo-id <username/repo> HF Space repo id (default: HF_SPACE_REPO_ID env var) |
| --env-dir <path> OpenEnv directory (default: repo root) |
| --skip-validate Skip `openenv validate` |
| --skip-build Skip `openenv build` |
| --create-pr Push as Pull Request |
| --private Deploy as private space |
| --dry-run Print commands only |
| USAGE |
| exit 0 |
| ;; |
| *) |
| echo "Unknown flag: $1" |
| exit 1 |
| ;; |
| esac |
| done |
|
|
| run_cmd() { |
| if [[ "$DRY_RUN" == "true" ]]; then |
| echo "[dry-run] $*" |
| return 0 |
| fi |
| "$@" |
| } |
|
|
| echo "[deploy_space] repo_id=$REPO_ID env_dir=$ENV_DIR create_pr=$CREATE_PR dry_run=$DRY_RUN" |
| ensure_polyguard_venv |
| if ! sync_polyguard_requirements >/dev/null 2>&1; then |
| echo "[deploy_space] dependency sync skipped (offline/restricted), continuing with existing environment" |
| fi |
| activate_polyguard_path |
|
|
| if [[ "$DO_VALIDATE" == "true" ]]; then |
| run_cmd openenv validate "$ENV_DIR" |
| fi |
|
|
| if [[ "$DO_BUILD" == "true" ]]; then |
| run_cmd openenv build "$ENV_DIR" --tag "$IMAGE_TAG" |
| fi |
|
|
| PUSH_ARGS=(openenv push "$ENV_DIR" --repo-id "$REPO_ID") |
| if [[ "$CREATE_PR" == "true" ]]; then |
| PUSH_ARGS+=(--create-pr) |
| fi |
| if [[ "$PRIVATE" == "true" ]]; then |
| PUSH_ARGS+=(--private) |
| fi |
| run_cmd "${PUSH_ARGS[@]}" |
|
|
| echo "[deploy_space] completed" |
|
|