inou/.claude/worktrees/vibrant-nash/mcpb/build.sh

46 lines
1.3 KiB
Bash

#!/bin/bash
# Build Inou Desktop Extension (.mcpb) - Node.js bundled version
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
NODE_BRIDGE_DIR="$PROJECT_DIR/mcp-bridge-node"
OUTPUT_DIR="$PROJECT_DIR/portal/static/download"
VERSION=$(grep '"version"' "$SCRIPT_DIR/manifest.json" | sed 's/.*: "\(.*\)".*/\1/')
echo "=== Building Inou Desktop Extension v$VERSION (Node.js) ==="
# Bundle with esbuild
echo "Bundling with esbuild..."
cd "$NODE_BRIDGE_DIR"
npx esbuild index.js --bundle --platform=node --target=node18 --outfile=dist/index.js --format=esm 2>/dev/null
# Create temp directory
TEMP_DIR=$(mktemp -d)
EXTENSION_DIR="$TEMP_DIR/inou-health"
mkdir -p "$EXTENSION_DIR/server"
# Copy manifest
cp "$SCRIPT_DIR/manifest.json" "$EXTENSION_DIR/"
# Copy bundled server (single file, no node_modules needed)
cp "$NODE_BRIDGE_DIR/dist/index.js" "$EXTENSION_DIR/server/"
# Create .mcpb (ZIP archive)
echo "Creating .mcpb package..."
OUTPUT_FILE="$OUTPUT_DIR/inou.mcpb"
mkdir -p "$OUTPUT_DIR"
rm -f "$OUTPUT_FILE"
cd "$EXTENSION_DIR"
zip -r -q "$OUTPUT_FILE" manifest.json server/
# Cleanup
rm -rf "$TEMP_DIR"
# Show result
echo ""
echo "Built: $OUTPUT_FILE"
ls -lh "$OUTPUT_FILE"
echo ""
echo "To test: Double-click the .mcpb file or drag into Claude Desktop"