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"