annotate hg-web/dev.sh @ 279:b3b547563ec7

Add Google connector service and agent wiki Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code. Co-authored-by: Copilot <[email protected]> Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 22:22:36 -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"