annotate hg-web/dev.sh @ 267:a78f5986011f

discover bundled production runtimes Locate Bazel-packaged Copilot and Python binaries by stable suffix instead of hardcoding an external repository prefix. Co-authored-by: Copilot <[email protected]>
author MrJuneJune <me@mrjunejune.com>
date Fri, 07 Aug 2026 12:58:55 -0700
parents c5129452493e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
222
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
1 #!/usr/bin/env bash
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
2 set -euo pipefail
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
3
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
4 if [[ -n "${RUNFILES_DIR:-}" ]]; then
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
5 source "$RUNFILES_DIR/bazel_tools/tools/bash/runfiles/runfiles.bash"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
6 elif [[ -n "${RUNFILES_MANIFEST_FILE:-}" ]]; then
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
7 runfiles_library="$(
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
8 grep -sm1 '^bazel_tools/tools/bash/runfiles/runfiles.bash ' \
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
9 "$RUNFILES_MANIFEST_FILE" | cut -d' ' -f2-
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
10 )"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
11 source "$runfiles_library"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
12 elif [[ -d "$0.runfiles" ]]; then
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
13 RUNFILES_DIR="$0.runfiles"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
14 export RUNFILES_DIR
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
15 source "$RUNFILES_DIR/bazel_tools/tools/bash/runfiles/runfiles.bash"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
16 elif [[ -f "$0.runfiles_manifest" ]]; then
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
17 RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
18 export RUNFILES_MANIFEST_FILE
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
19 runfiles_library="$(
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
20 grep -sm1 '^bazel_tools/tools/bash/runfiles/runfiles.bash ' \
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
21 "$RUNFILES_MANIFEST_FILE" | cut -d' ' -f2-
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
22 )"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
23 source "$runfiles_library"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
24 else
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
25 echo "Bazel runfiles are unavailable." >&2
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
26 exit 1
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
27 fi
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
28
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
29 workspace="${BUILD_WORKSPACE_DIRECTORY:-}"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
30 if [[ -z "$workspace" || ! -d "$workspace/.hg" ]]; then
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
31 echo "Run this target from the Zenbu workspace." >&2
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
32 exit 1
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
33 fi
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
34
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
35 server="$(rlocation _main/hg-web/hg_web_server)"
249
c5129452493e [deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents: 222
diff changeset
36 hg_binary="$(rlocation _main/third_party/mercurial/runtime/bin/hg)"
222
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
37 runfiles_workspace="$(dirname "$(dirname "$server")")"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
38 hg_pid=""
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
39 server_pid=""
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
40
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
41 cleanup() {
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
42 trap - EXIT INT TERM
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
43 for pid in "$server_pid" "$hg_pid"; do
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
44 if [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
45 kill "$pid" 2>/dev/null || true
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
46 fi
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
47 done
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
48 for pid in "$server_pid" "$hg_pid"; do
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
49 if [[ -n "$pid" ]]; then
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
50 wait "$pid" 2>/dev/null || true
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
51 fi
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
52 done
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
53 }
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
54
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
55 trap cleanup EXIT
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
56 trap 'exit 130' INT TERM
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
57
249
c5129452493e [deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents: 222
diff changeset
58 HGRCPATH= "$hg_binary" \
c5129452493e [deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents: 222
diff changeset
59 --config "web.allow-push=" \
c5129452493e [deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents: 222
diff changeset
60 --config "web.deny-push=*" \
c5129452493e [deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents: 222
diff changeset
61 --repository "$workspace" serve \
222
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
62 --address 127.0.0.1 \
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
63 --port 4444 \
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
64 --accesslog - \
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
65 --errorlog - &
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
66 hg_pid=$!
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
67
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
68 (
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
69 cd "$runfiles_workspace"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
70 exec "$server"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
71 ) &
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
72 server_pid=$!
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
73
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
74 echo "hg-web: http://127.0.0.1:6970"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
75 echo "Mercurial wire endpoint: http://127.0.0.1:6970/repo"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
76 echo "Press Ctrl-C to stop both servers."
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
77
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
78 set +e
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
79 wait -n "$hg_pid" "$server_pid"
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
80 status=$?
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
81 set -e
a8d6435dc021 [hg-web] Run local stack through Bazel
MrJuneJune <me@mrjunejune.com>
parents:
diff changeset
82 exit "$status"