4a73eb04b9
CI / rust client (hh) (macos-latest) (push) Waiting to run
CI / rust client (hh) (ubuntu-latest) (push) Waiting to run
CI / rust coverage (push) Waiting to run
CI / python server (3.10) (push) Waiting to run
CI / python server (3.11) (push) Waiting to run
CI / python server (3.12) (push) Waiting to run
CI / headless e2e smoke (push) Waiting to run
CI / dependency audit (push) Waiting to run
CI / secret scanning (push) Waiting to run
- host-house.sh: one tmux session hosting a room (server window) plus your own GUI client window — builds, frees the port, waits for /health, then attaches. - host-room.sh: free_port() kills any stale LISTENer squatting on the port so the bind can't fail with "address already in use". - join.sh: cap each remote pull with `timeout` + GIT_TERMINAL_PROMPT=0 so an unreachable remote fails fast instead of hanging. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
36 lines
1.6 KiB
Bash
Executable File
36 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Join the live hack-house room. Usage: ./join.sh <yourname> [host]
|
|
# local: ./join.sh alice
|
|
# remote: ./join.sh alice 100.117.177.50
|
|
# The room password (a shared secret) comes from $HH_PASSWORD, else a no-echo
|
|
# prompt — never hardcoded, so it can't drift from the room's random password.
|
|
NAME="${1:-guest}"
|
|
HOST="${2:-127.0.0.1}"
|
|
cd "$(dirname "$0")/.."
|
|
|
|
# Sync the latest code before joining, then rebuild so it takes effect. Pulls
|
|
# are best-effort and fast-forward only: an unreachable remote or diverged
|
|
# history just warns and is skipped — it never blocks you from joining.
|
|
BRANCH="$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo HEAD)"
|
|
# Cap each pull so an unreachable/slow remote fails fast instead of hanging on
|
|
# the OS TCP timeout; GIT_TERMINAL_PROMPT=0 stops it blocking on a credential
|
|
# prompt. (No `timeout` on this box? fall back to a plain pull.)
|
|
TO=""; command -v timeout >/dev/null 2>&1 && TO="timeout 10"
|
|
for remote in gitea origin; do
|
|
if git remote get-url "$remote" >/dev/null 2>&1; then
|
|
echo "⛧ syncing $BRANCH from $remote…"
|
|
GIT_TERMINAL_PROMPT=0 $TO git pull --ff-only "$remote" "$BRANCH" 2>&1 \
|
|
|| echo " (skipped — couldn't fast-forward from $remote/$BRANCH)"
|
|
fi
|
|
done
|
|
echo "⛧ building client…"
|
|
cargo build --quiet 2>&1 || echo "✖ build failed — joining with the existing binary"
|
|
|
|
PASSWORD="${HH_PASSWORD:-}"
|
|
if [[ -z "$PASSWORD" ]]; then
|
|
read -rsp "⛧ room password: " PASSWORD < /dev/tty
|
|
echo
|
|
fi
|
|
[[ -n "$PASSWORD" ]] || { echo "✖ a password is required" >&2; exit 1; }
|
|
exec ./target/debug/hack-house connect "$HOST" 4173 "$NAME" --password "$PASSWORD" --no-tls
|