File size: 2,282 Bytes
21c7db9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | #!/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"
|