Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 37 additions & 43 deletions down.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,15 @@ set -euo pipefail
# Usage: ./down.sh

PROVIDER_PLATFORM_PATH="${PROVIDER_PLATFORM_PATH:-$HOME/repos/provider-platform}"
CONSOLE_PATH="${CONSOLE_PATH:-$HOME/repos/provider-console}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

export PATH="$HOME/.local/bin:$HOME/.cargo/bin:$PATH"

# Ports & names (must match up.sh)
PROVIDER_PORT=3010
CONSOLE_PORT=3020
PROVIDER_CONSOLE_PORT=3020
COUNCIL_CONSOLE_PORT=3030
NETWORK_DASHBOARD_PORT=3040
PG_CONTAINER="provider-platform-db"
ACCT_ADMIN="admin"
ACCT_PROVIDER="provider"
Expand All @@ -29,51 +30,39 @@ NC='\033[0m'
info() { echo -e "${GREEN}[INFO]${NC} $*"; }
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }

# --- Stop provider-platform process ---
PID_FILE="$SCRIPT_DIR/.provider.pid"
killed=false

if [ -f "$PID_FILE" ]; then
PID=$(cat "$PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
kill "$PID" 2>/dev/null
info "Stopped provider-platform (PID $PID)"
killed=true
fi
rm "$PID_FILE"
fi

if [ "$killed" = false ]; then
for pid in $(lsof -ti :"$PROVIDER_PORT" 2>/dev/null || true); do
if ps -p "$pid" -o command= 2>/dev/null | grep -q deno; then
# --- Helper: stop a process by PID file or port ---
stop_process() {
local name=$1
local pid_file=$2
local port=$3
local killed=false

if [ -f "$pid_file" ]; then
local pid
pid=$(cat "$pid_file")
if kill -0 "$pid" 2>/dev/null; then
kill "$pid" 2>/dev/null
info "Stopped deno process on port $PROVIDER_PORT (PID $pid)"
info "Stopped $name (PID $pid)"
killed=true
fi
done
fi

# --- Stop provider-console process ---
CONSOLE_PID_FILE="$SCRIPT_DIR/.console.pid"
console_killed=false
rm "$pid_file"
fi

if [ -f "$CONSOLE_PID_FILE" ]; then
PID=$(cat "$CONSOLE_PID_FILE")
if kill -0 "$PID" 2>/dev/null; then
kill "$PID" 2>/dev/null
info "Stopped provider-console (PID $PID)"
console_killed=true
if [ "$killed" = false ]; then
for pid in $(lsof -ti :"$port" 2>/dev/null || true); do
if ps -p "$pid" -o command= 2>/dev/null | grep -q deno; then
kill "$pid" 2>/dev/null
info "Stopped deno process on port $port (PID $pid)"
fi
done
fi
rm "$CONSOLE_PID_FILE"
fi
}

if [ "$console_killed" = false ]; then
for pid in $(lsof -ti :"$CONSOLE_PORT" 2>/dev/null || true); do
if ps -p "$pid" -o command= 2>/dev/null | grep -q deno; then
kill "$pid" 2>/dev/null
info "Stopped deno process on port $CONSOLE_PORT (PID $pid)"
fi
done
fi
# --- Stop all processes ---
stop_process "provider-platform" "$SCRIPT_DIR/.provider.pid" "$PROVIDER_PORT"
stop_process "provider-console" "$SCRIPT_DIR/.provider-console.pid" "$PROVIDER_CONSOLE_PORT"
stop_process "council-console" "$SCRIPT_DIR/.council-console.pid" "$COUNCIL_CONSOLE_PORT"
stop_process "network-dashboard" "$SCRIPT_DIR/.network-dashboard.pid" "$NETWORK_DASHBOARD_PORT"

# --- Stop PostgreSQL container ---
if docker ps -a --format '{{.Names}}' | grep -q "^${PG_CONTAINER}$"; then
Expand All @@ -94,13 +83,18 @@ fi
for f in \
"$PROVIDER_PLATFORM_PATH/.env" \
"$SCRIPT_DIR/provider.log" \
"$SCRIPT_DIR/console.log" \
"$SCRIPT_DIR/provider-console.log" \
"$SCRIPT_DIR/council-console.log" \
"$SCRIPT_DIR/network-dashboard.log" \
; do
if [ -f "$f" ]; then
rm "$f"
info "Removed $f"
fi
done

# --- Clean up old pid files (backward compat) ---
rm -f "$SCRIPT_DIR/.console.pid" "$SCRIPT_DIR/console.log" 2>/dev/null

echo ""
info "Down. local-dev services stopped (shared Stellar & Jaeger left running)."
126 changes: 105 additions & 21 deletions up.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,19 @@ set -euo pipefail

SOROBAN_CORE_PATH="${SOROBAN_CORE_PATH:-$HOME/repos/soroban-core}"
PROVIDER_PLATFORM_PATH="${PROVIDER_PLATFORM_PATH:-$HOME/repos/provider-platform}"
CONSOLE_PATH="${CONSOLE_PATH:-$HOME/repos/provider-console}"
PROVIDER_CONSOLE_PATH="${PROVIDER_CONSOLE_PATH:-$HOME/repos/provider-console}"
COUNCIL_CONSOLE_PATH="${COUNCIL_CONSOLE_PATH:-$HOME/repos/council-console}"
NETWORK_DASHBOARD_PATH="${NETWORK_DASHBOARD_PATH:-$HOME/repos/network-dashboard}"
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

# Ports (offset from local-dev defaults to prevent collisions)
STELLAR_RPC_PORT=8000 # shared with local-dev
JAEGER_OTLP_PORT=4318 # shared with local-dev
PG_PORT=5442
PROVIDER_PORT=3010
CONSOLE_PORT=3020
PROVIDER_CONSOLE_PORT=3020
COUNCIL_CONSOLE_PORT=3030
NETWORK_DASHBOARD_PORT=3040

# Container / account names
PG_CONTAINER="provider-platform-db"
Expand Down Expand Up @@ -73,7 +77,9 @@ info "Deno: $($DENO_BIN --version | head -1)"

[ -d "$SOROBAN_CORE_PATH" ] || error "soroban-core not found at $SOROBAN_CORE_PATH"
[ -d "$PROVIDER_PLATFORM_PATH" ] || error "provider-platform not found at $PROVIDER_PLATFORM_PATH"
[ -d "$CONSOLE_PATH" ] || error "provider-console not found at $CONSOLE_PATH"
[ -d "$PROVIDER_CONSOLE_PATH" ] || error "provider-console not found at $PROVIDER_CONSOLE_PATH"
[ -d "$COUNCIL_CONSOLE_PATH" ] || error "council-console not found at $COUNCIL_CONSOLE_PATH"
[ -d "$NETWORK_DASHBOARD_PATH" ] || error "network-dashboard not found at $NETWORK_DASHBOARD_PATH"

# ============================================================
section "2/7 Stellar Network (shared)"
Expand Down Expand Up @@ -273,12 +279,11 @@ for i in $(seq 1 15); do
done

# ============================================================
section "7/7 Provider Console (port $CONSOLE_PORT)"
section "7/9 Provider Console (port $PROVIDER_CONSOLE_PORT)"
# ============================================================

cd "$CONSOLE_PATH"
cd "$PROVIDER_CONSOLE_PATH"

# Write runtime config pointing to provider-platform
cat > public/config.js <<EOF
// Runtime configuration — generated by local-dev/up.sh
window.__CONSOLE_CONFIG__ = {
Expand All @@ -287,25 +292,102 @@ window.__CONSOLE_CONFIG__ = {
};
EOF

info "Building console..."
info "Building provider-console..."
"$DENO_BIN" task build

info "Starting provider-console (background)..."
CONSOLE_LOG="$SCRIPT_DIR/console.log"
PORT=$CONSOLE_PORT \
PROVIDER_CONSOLE_LOG="$SCRIPT_DIR/provider-console.log"
PORT=$PROVIDER_CONSOLE_PORT \
API_BASE_URL="http://localhost:${PROVIDER_PORT}" \
nohup "$DENO_BIN" task serve > "$CONSOLE_LOG" 2>&1 &
CONSOLE_PID=$!
echo "$CONSOLE_PID" > "$SCRIPT_DIR/.console.pid"
info "Console running (PID $CONSOLE_PID, log: $CONSOLE_LOG)"
nohup "$DENO_BIN" task serve > "$PROVIDER_CONSOLE_LOG" 2>&1 &
PROVIDER_CONSOLE_PID=$!
echo "$PROVIDER_CONSOLE_PID" > "$SCRIPT_DIR/.provider-console.pid"
info "Provider Console running (PID $PROVIDER_CONSOLE_PID, log: $PROVIDER_CONSOLE_LOG)"

for i in $(seq 1 10); do
if curl -sf "http://localhost:${CONSOLE_PORT}/" >/dev/null 2>&1; then
info "Console is ready on port $CONSOLE_PORT."
if curl -sf "http://localhost:${PROVIDER_CONSOLE_PORT}/" >/dev/null 2>&1; then
info "Provider Console is ready."
break
fi
if [ "$i" -eq 10 ]; then
warn "Console may not be ready yet. Check $CONSOLE_LOG"
warn "Provider Console may not be ready yet. Check $PROVIDER_CONSOLE_LOG"
fi
sleep 1
done

# ============================================================
section "8/9 Council Console (port $COUNCIL_CONSOLE_PORT)"
# ============================================================

cd "$COUNCIL_CONSOLE_PATH"

cat > public/config.js <<EOF
// Runtime configuration — generated by local-dev/up.sh
window.__CONSOLE_CONFIG__ = {
environment: "development",
stellarNetwork: "standalone",
rpcUrl: "http://localhost:${STELLAR_RPC_PORT}/soroban/rpc",
horizonUrl: "http://localhost:${STELLAR_RPC_PORT}",
friendbotUrl: "http://localhost:${STELLAR_RPC_PORT}/friendbot",
};
EOF

info "Building council-console..."
"$DENO_BIN" task build

info "Starting council-console (background)..."
COUNCIL_CONSOLE_LOG="$SCRIPT_DIR/council-console.log"
PORT=$COUNCIL_CONSOLE_PORT \
nohup "$DENO_BIN" task serve > "$COUNCIL_CONSOLE_LOG" 2>&1 &
COUNCIL_CONSOLE_PID=$!
echo "$COUNCIL_CONSOLE_PID" > "$SCRIPT_DIR/.council-console.pid"
info "Council Console running (PID $COUNCIL_CONSOLE_PID, log: $COUNCIL_CONSOLE_LOG)"

for i in $(seq 1 10); do
if curl -sf "http://localhost:${COUNCIL_CONSOLE_PORT}/" >/dev/null 2>&1; then
info "Council Console is ready."
break
fi
if [ "$i" -eq 10 ]; then
warn "Council Console may not be ready yet. Check $COUNCIL_CONSOLE_LOG"
fi
sleep 1
done

# ============================================================
section "9/9 Network Dashboard (port $NETWORK_DASHBOARD_PORT)"
# ============================================================

cd "$NETWORK_DASHBOARD_PATH"

cat > public/config.js <<EOF
// Runtime configuration — generated by local-dev/up.sh
window.__DASHBOARD_CONFIG__ = {
environment: "development",
stellarNetwork: "standalone",
rpcUrl: "http://localhost:${STELLAR_RPC_PORT}/soroban/rpc",
horizonUrl: "http://localhost:${STELLAR_RPC_PORT}",
};
EOF

info "Building network-dashboard..."
"$DENO_BIN" task build

info "Starting network-dashboard (background)..."
NETWORK_DASHBOARD_LOG="$SCRIPT_DIR/network-dashboard.log"
PORT=$NETWORK_DASHBOARD_PORT \
nohup "$DENO_BIN" task serve > "$NETWORK_DASHBOARD_LOG" 2>&1 &
NETWORK_DASHBOARD_PID=$!
echo "$NETWORK_DASHBOARD_PID" > "$SCRIPT_DIR/.network-dashboard.pid"
info "Network Dashboard running (PID $NETWORK_DASHBOARD_PID, log: $NETWORK_DASHBOARD_LOG)"

for i in $(seq 1 10); do
if curl -sf "http://localhost:${NETWORK_DASHBOARD_PORT}/" >/dev/null 2>&1; then
info "Network Dashboard is ready."
break
fi
if [ "$i" -eq 10 ]; then
warn "Network Dashboard may not be ready yet. Check $NETWORK_DASHBOARD_LOG"
fi
sleep 1
done
Expand All @@ -322,11 +404,13 @@ echo " Channel Auth: $AUTH_ID"
echo " Privacy Channel: $CHANNEL_ID"
echo ""
echo "Services:"
echo " Provider Platform: http://localhost:$PROVIDER_PORT (PID $PROVIDER_PID)"
echo " Provider Console: http://localhost:$CONSOLE_PORT (PID $CONSOLE_PID)"
echo " PostgreSQL: localhost:$PG_PORT (container: $PG_CONTAINER)"
echo " Stellar RPC: http://localhost:$STELLAR_RPC_PORT (shared)"
echo " Jaeger UI: http://localhost:16686 (shared)"
echo " Provider Platform: http://localhost:$PROVIDER_PORT (PID $PROVIDER_PID)"
echo " Provider Console: http://localhost:$PROVIDER_CONSOLE_PORT (PID $PROVIDER_CONSOLE_PID)"
echo " Council Console: http://localhost:$COUNCIL_CONSOLE_PORT (PID $COUNCIL_CONSOLE_PID)"
echo " Network Dashboard: http://localhost:$NETWORK_DASHBOARD_PORT (PID $NETWORK_DASHBOARD_PID)"
echo " PostgreSQL: localhost:$PG_PORT (container: $PG_CONTAINER)"
echo " Stellar RPC: http://localhost:$STELLAR_RPC_PORT (shared)"
echo " Jaeger UI: http://localhost:16686 (shared)"
echo ""
echo "To stop everything:"
echo " ./down.sh"
Expand Down
Loading