inou/build-mac.sh

68 lines
1.9 KiB
Bash
Executable File

#!/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."