Mercurial
annotate hg-web/run.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 |
| rev | line source |
|---|---|
|
249
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
1 #!/usr/bin/env bash |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
2 set -Eeuo pipefail |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
3 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
4 script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
5 bundle_root="$(dirname "$script_dir")" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
6 repository="${HG_REPOSITORY_PATH:-$bundle_root/repository}" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
7 hg_binary="$bundle_root/third_party/mercurial/runtime/bin/hg" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
8 server="$bundle_root/hg_web_server" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
9 hg_pid="" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
10 server_pid="" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
11 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
12 if [[ ! -x "$hg_binary" ]]; then |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
13 echo "Bundled Mercurial is unavailable: $hg_binary" >&2 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
14 exit 1 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
15 fi |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
16 if [[ ! -x "$server" ]]; then |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
17 echo "hg-web server is unavailable: $server" >&2 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
18 exit 1 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
19 fi |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
20 if [[ ! -d "$repository/.hg" ]]; then |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
21 echo "Mercurial repository snapshot is unavailable: $repository" >&2 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
22 exit 1 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
23 fi |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
24 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
25 cleanup() { |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
26 trap - EXIT INT TERM |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
27 for pid in "$server_pid" "$hg_pid"; do |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
28 if [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
29 kill "$pid" 2>/dev/null || true |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
30 fi |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
31 done |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
32 for pid in "$server_pid" "$hg_pid"; do |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
33 if [[ -n "$pid" ]]; then |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
34 wait "$pid" 2>/dev/null || true |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
35 fi |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
36 done |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
37 } |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
38 trap cleanup EXIT |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
39 trap 'exit 130' INT TERM |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
40 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
41 hg_arguments=( |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
42 --repository "$repository" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
43 serve |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
44 --address 127.0.0.1 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
45 --port 4444 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
46 --accesslog - |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
47 --errorlog - |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
48 ) |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
49 if [[ "${HG_ALLOW_PUSH:-false}" == "true" ]]; then |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
50 echo "WARNING: Mercurial pushes are enabled; protect /repo in Nginx." |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
51 hg_arguments=( |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
52 --config "web.allow-push=*" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
53 --config "web.deny-push=" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
54 --config "web.push_ssl=false" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
55 "${hg_arguments[@]}" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
56 ) |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
57 else |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
58 hg_arguments=( |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
59 --config "web.allow-push=" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
60 --config "web.deny-push=*" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
61 "${hg_arguments[@]}" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
62 ) |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
63 fi |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
64 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
65 export HGRCPATH= |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
66 "$hg_binary" "${hg_arguments[@]}" & |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
67 hg_pid=$! |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
68 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
69 ( |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
70 cd "$bundle_root" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
71 exec "$server" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
72 ) & |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
73 server_pid=$! |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
74 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
75 echo "hg-web: http://127.0.0.1:6970" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
76 echo "hg serve repository: $repository" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
77 |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
78 set +e |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
79 wait -n "$hg_pid" "$server_pid" |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
80 status=$? |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
81 set -e |
|
c5129452493e
[deploy] Bundle Mercurial with hg-web
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
82 exit "$status" |