Add bash version of go script for macOS/Linux
Same as go_example_1.ps1 but for bash — starts CAN service, Paste UI, and sync agent. Uses trap for clean shutdown on Ctrl+C. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
23e5e0712e
commit
71002939a1
85
go_example_1.sh
Normal file
85
go_example_1.sh
Normal file
@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env bash
|
||||
# go_example_1.sh — Start CanService + Paste + Sync agent
|
||||
#
|
||||
# Run on multiple machines (after git clone) and they will auto-sync
|
||||
# all ingested assets via iroh's relay network. No port forwarding needed.
|
||||
|
||||
set -e
|
||||
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
cleanup() {
|
||||
echo ""
|
||||
echo "Shutting down..."
|
||||
[ -n "$CAN_PID" ] && kill "$CAN_PID" 2>/dev/null
|
||||
[ -n "$SYNC_PID" ] && kill "$SYNC_PID" 2>/dev/null
|
||||
[ -n "$PASTE_PID" ] && kill "$PASTE_PID" 2>/dev/null
|
||||
wait 2>/dev/null
|
||||
exit 0
|
||||
}
|
||||
trap cleanup INT TERM EXIT
|
||||
|
||||
# Kill anything on our ports
|
||||
echo "Cleaning up stale processes..."
|
||||
lsof -ti:3210 2>/dev/null | xargs kill -9 2>/dev/null || true
|
||||
lsof -ti:3211 2>/dev/null | xargs kill -9 2>/dev/null || true
|
||||
sleep 0.5
|
||||
|
||||
# --- Build everything ---
|
||||
|
||||
echo "Building CanService..."
|
||||
cargo build --manifest-path "$ROOT/Cargo.toml"
|
||||
|
||||
echo "Building Paste example..."
|
||||
cargo build --manifest-path "$ROOT/examples/paste/Cargo.toml"
|
||||
|
||||
echo "Building CAN Sync agent..."
|
||||
cargo build --manifest-path "$ROOT/examples/can-sync/Cargo.toml" --bin can-sync
|
||||
|
||||
# --- Start CanService ---
|
||||
|
||||
echo "Starting CanService on port 3210..."
|
||||
cargo run --manifest-path "$ROOT/Cargo.toml" &
|
||||
CAN_PID=$!
|
||||
|
||||
# Wait for CanService to be ready
|
||||
echo "Waiting for CanService..."
|
||||
for i in $(seq 1 30); do
|
||||
if curl -sf http://127.0.0.1:3210/api/v1/can/0/list >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
if [ "$i" -eq 30 ]; then
|
||||
echo "CanService failed to start within 15s"
|
||||
exit 1
|
||||
fi
|
||||
sleep 0.5
|
||||
done
|
||||
echo "CanService ready."
|
||||
|
||||
# --- Start Sync agent ---
|
||||
|
||||
SYNC_CONFIG="$ROOT/examples/can-sync/config.yaml"
|
||||
echo "Starting CAN Sync agent (P2P replication)..."
|
||||
cargo run --manifest-path "$ROOT/examples/can-sync/Cargo.toml" --bin can-sync -- "$SYNC_CONFIG" &
|
||||
SYNC_PID=$!
|
||||
sleep 2
|
||||
|
||||
# --- Start Paste example ---
|
||||
|
||||
echo "Starting Paste on port 3211..."
|
||||
cargo run --manifest-path "$ROOT/examples/paste/Cargo.toml" &
|
||||
PASTE_PID=$!
|
||||
|
||||
echo ""
|
||||
echo "Running:"
|
||||
echo " CanService -> http://127.0.0.1:3210"
|
||||
echo " Paste UI -> http://127.0.0.1:3211"
|
||||
echo " CAN Sync -> P2P replication active (iroh relay)"
|
||||
echo ""
|
||||
echo "Sync passphrase: 'duke-canman-sync'"
|
||||
echo "Any other machine running this script with the same passphrase"
|
||||
echo "will automatically discover this instance and sync all assets."
|
||||
echo ""
|
||||
echo "Press Ctrl+C to stop all services."
|
||||
|
||||
# Wait for any process to exit
|
||||
wait -n "$CAN_PID" "$PASTE_PID" "$SYNC_PID" 2>/dev/null || true
|
||||
Loading…
x
Reference in New Issue
Block a user