view hg-web/dev.sh @ 242:543df0fe7168

[tools] Add full HLS player support
author MrJuneJune <me@mrjunejune.com>
date Mon, 03 Aug 2026 13:14:41 -0700
parents a8d6435dc021
children c5129452493e
line wrap: on
line source

#!/usr/bin/env bash
set -euo pipefail

if [[ -n "${RUNFILES_DIR:-}" ]]; then
  source "$RUNFILES_DIR/bazel_tools/tools/bash/runfiles/runfiles.bash"
elif [[ -n "${RUNFILES_MANIFEST_FILE:-}" ]]; then
  runfiles_library="$(
    grep -sm1 '^bazel_tools/tools/bash/runfiles/runfiles.bash ' \
      "$RUNFILES_MANIFEST_FILE" | cut -d' ' -f2-
  )"
  source "$runfiles_library"
elif [[ -d "$0.runfiles" ]]; then
  RUNFILES_DIR="$0.runfiles"
  export RUNFILES_DIR
  source "$RUNFILES_DIR/bazel_tools/tools/bash/runfiles/runfiles.bash"
elif [[ -f "$0.runfiles_manifest" ]]; then
  RUNFILES_MANIFEST_FILE="$0.runfiles_manifest"
  export RUNFILES_MANIFEST_FILE
  runfiles_library="$(
    grep -sm1 '^bazel_tools/tools/bash/runfiles/runfiles.bash ' \
      "$RUNFILES_MANIFEST_FILE" | cut -d' ' -f2-
  )"
  source "$runfiles_library"
else
  echo "Bazel runfiles are unavailable." >&2
  exit 1
fi

workspace="${BUILD_WORKSPACE_DIRECTORY:-}"
if [[ -z "$workspace" || ! -d "$workspace/.hg" ]]; then
  echo "Run this target from the Zenbu workspace." >&2
  exit 1
fi

server="$(rlocation _main/hg-web/hg_web_server)"
runfiles_workspace="$(dirname "$(dirname "$server")")"
hg_pid=""
server_pid=""

cleanup() {
  trap - EXIT INT TERM
  for pid in "$server_pid" "$hg_pid"; do
    if [[ -n "$pid" ]] && kill -0 "$pid" 2>/dev/null; then
      kill "$pid" 2>/dev/null || true
    fi
  done
  for pid in "$server_pid" "$hg_pid"; do
    if [[ -n "$pid" ]]; then
      wait "$pid" 2>/dev/null || true
    fi
  done
}

trap cleanup EXIT
trap 'exit 130' INT TERM

hg --repository "$workspace" serve \
  --address 127.0.0.1 \
  --port 4444 \
  --accesslog - \
  --errorlog - &
hg_pid=$!

(
  cd "$runfiles_workspace"
  exec "$server"
) &
server_pid=$!

echo "hg-web: http://127.0.0.1:6970"
echo "Mercurial wire endpoint: http://127.0.0.1:6970/repo"
echo "Press Ctrl-C to stop both servers."

set +e
wait -n "$hg_pid" "$server_pid"
status=$?
set -e
exit "$status"