46 lines
1.3 KiB
Bash
Executable File
46 lines
1.3 KiB
Bash
Executable File
#!/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"
|