adithya9903's picture
Deploy PolyGuard HF training Space
fd0c71a verified
#!/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"