Files
mcp-docx/build.sh
T
2025-08-11 14:31:51 +08:00

107 lines
3.7 KiB
Bash
Executable File

#!/bin/bash
# Build script for DOCX MCP Server
set -e
echo "🔨 Building DOCX MCP Server (Standalone Edition)..."
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Check for Rust
if ! command -v cargo &> /dev/null; then
echo -e "${RED}❌ Cargo not found. Please install Rust.${NC}"
echo "Visit: https://www.rust-lang.org/tools/install"
exit 1
fi
# Check if fonts are downloaded
if [ ! -f "assets/fonts/LiberationSans-Regular.ttf" ]; then
echo -e "${YELLOW}📥 Fonts not found. Downloading open-source fonts...${NC}"
if [ -f "./download_fonts.sh" ]; then
./download_fonts.sh
else
echo -e "${YELLOW}⚠️ Font files not found. The server will still work but with basic fonts.${NC}"
echo -e "${YELLOW} Run ./download_fonts.sh to download professional fonts.${NC}"
mkdir -p assets/fonts
# Create placeholder files so build doesn't fail
touch assets/fonts/LiberationSans-Regular.ttf
touch assets/fonts/LiberationSans-Bold.ttf
touch assets/fonts/LiberationSans-Italic.ttf
touch assets/fonts/LiberationMono-Regular.ttf
touch assets/fonts/NotoSans-Regular.ttf
touch assets/fonts/NotoSans-Bold.ttf
fi
fi
# Build mode selection
BUILD_MODE=${1:-release}
FEATURES=${2:-}
if [ "$BUILD_MODE" = "debug" ]; then
echo -e "${YELLOW}📦 Building in debug mode...${NC}"
if [ -n "$FEATURES" ]; then
cargo build --features "$FEATURES"
else
cargo build
fi
BINARY_PATH="target/debug/docx-mcp"
else
echo -e "${YELLOW}📦 Building in release mode...${NC}"
if [ -n "$FEATURES" ]; then
cargo build --release --features "$FEATURES"
else
cargo build --release
fi
BINARY_PATH="target/release/docx-mcp"
fi
# Check if build succeeded
if [ -f "$BINARY_PATH" ]; then
echo -e "${GREEN}✅ Build successful!${NC}"
echo -e "Binary location: ${GREEN}$BINARY_PATH${NC}"
# Display standalone features
echo -e "\n${BLUE}🎯 Standalone Features Enabled:${NC}"
echo -e "${GREEN}${NC} Pure Rust DOCX parsing"
echo -e "${GREEN}${NC} Built-in PDF generation"
echo -e "${GREEN}${NC} Embedded fonts"
echo -e "${GREEN}${NC} Native image processing"
echo -e "${GREEN}${NC} Zero external dependencies required"
# Check for optional enhancements
echo -e "\n${YELLOW}Optional enhancements (not required):${NC}"
if command -v libreoffice &> /dev/null; then
echo -e "${GREEN}${NC} LibreOffice found (enhanced PDF conversion available)"
else
echo -e "${YELLOW}${NC} LibreOffice not found (using built-in PDF converter)"
echo " Optional: brew install libreoffice (macOS) or apt-get install libreoffice (Linux)"
fi
if command -v pdftoppm &> /dev/null; then
echo -e "${GREEN}${NC} pdftoppm found (PDF to image conversion available)"
elif command -v convert &> /dev/null; then
echo -e "${GREEN}${NC} ImageMagick found (PDF to image conversion available)"
elif command -v gs &> /dev/null; then
echo -e "${GREEN}${NC} Ghostscript found (PDF to image conversion available)"
else
echo -e "${YELLOW}${NC} No PDF to image converter found"
echo " Install one of: poppler-utils, imagemagick, or ghostscript"
fi
# Create example output directories
mkdir -p example/output example/images example/thumbnails
echo -e "\n${GREEN}🚀 Ready to run!${NC}"
echo -e "Start the server with: ${GREEN}$BINARY_PATH${NC}"
echo -e "Or with logging: ${GREEN}RUST_LOG=info $BINARY_PATH${NC}"
else
echo -e "${RED}❌ Build failed!${NC}"
exit 1
fi