#!/bin/bash # Mac Bridge Build Pipeline # Source of truth: johan@192.168.1.253:~/dev/inou set -e export PATH="/opt/homebrew/bin:$PATH" SERVER="johan@192.168.1.253" REMOTE_DIR="~/dev/inou" LOCAL_DIR="$HOME/dev/inou" BIN_DIR="$LOCAL_DIR/bin" BUILD_TIME=$(date -u '+%Y-%m-%d %H:%M:%S') echo "=== Inou Mac Build Pipeline ===" echo "" # Sync source from server echo "Syncing from $SERVER..." rsync -av --delete "$SERVER:$REMOTE_DIR/mcp-client/" "$LOCAL_DIR/mcp-client/" scp "$SERVER:$REMOTE_DIR/go.mod" "$SERVER:$REMOTE_DIR/go.sum" "$LOCAL_DIR/" echo "" # Build cd "$LOCAL_DIR/mcp-client" mkdir -p "$BIN_DIR" echo "Building darwin/arm64..." GOFIPS140=v1.0.0 go build -ldflags "-X main.Version=1.5.0 -X 'main.BuildTime=$BUILD_TIME'" -o "$BIN_DIR/inou_bridge_darwin_arm64" . echo "Building darwin/amd64..." GOFIPS140=v1.0.0 GOARCH=amd64 go build -ldflags "-X main.Version=1.5.0 -X 'main.BuildTime=$BUILD_TIME'" -o "$BIN_DIR/inou_bridge_darwin_amd64" . echo "" # Verify FIPS echo "Verifying FIPS compliance..." for bin in "$BIN_DIR"/inou_bridge_darwin_*; do NAME=$(basename "$bin") if go version -m "$bin" | grep -q GOFIPS140; then echo " $NAME: ✓" else echo " $NAME: ✗ NOT FIPS" exit 1 fi done echo "" # Deploy to server echo "Deploying to $SERVER..." scp "$BIN_DIR"/inou_bridge_darwin_* "$SERVER:/tank/inou/bin/" echo "" echo "Updating static downloads..." ssh "$SERVER" "cp /tank/inou/bin/inou_bridge_darwin_arm64 /tank/inou/static/download/mac/arm64/inou_bridge && cp /tank/inou/bin/inou_bridge_darwin_amd64 /tank/inou/static/download/mac/amd64/inou_bridge" echo "" # Install locally for Claude Desktop CLAUDE_BIN="$HOME/bin/inou_bridge" echo "Installing to Claude Desktop..." mkdir -p "$HOME/bin" cp "$BIN_DIR/inou_bridge_darwin_arm64" "$CLAUDE_BIN" chmod +x "$CLAUDE_BIN" echo " Installed: $CLAUDE_BIN" echo "" echo "=== Done ===" echo "Restart Claude Desktop to use the new version."