178 lines
5.2 KiB
Bash
Executable File
178 lines
5.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Verification script for Proxmox workspace setup
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ENV_FILE="$HOME/.env"
|
|
CLAUDE_CONFIG="$HOME/.config/Claude/claude_desktop_config.json"
|
|
|
|
echo "🔍 Verifying Proxmox Workspace Setup"
|
|
echo "===================================="
|
|
echo ""
|
|
|
|
ERRORS=0
|
|
|
|
# Check 1: pnpm workspace file
|
|
echo "1. Checking pnpm-workspace.yaml..."
|
|
if [ -f "$SCRIPT_DIR/pnpm-workspace.yaml" ]; then
|
|
echo " ✅ pnpm-workspace.yaml exists"
|
|
else
|
|
echo " ❌ pnpm-workspace.yaml not found"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
|
|
# Check 2: Root package.json
|
|
echo ""
|
|
echo "2. Checking root package.json..."
|
|
if [ -f "$SCRIPT_DIR/package.json" ]; then
|
|
echo " ✅ package.json exists"
|
|
if grep -q "mcp:start" "$SCRIPT_DIR/package.json"; then
|
|
echo " ✅ Workspace scripts configured"
|
|
else
|
|
echo " ⚠️ Workspace scripts may be missing"
|
|
fi
|
|
else
|
|
echo " ❌ package.json not found"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
|
|
# Check 3: MCP submodule
|
|
echo ""
|
|
echo "3. Checking mcp-proxmox submodule..."
|
|
if [ -d "$SCRIPT_DIR/mcp-proxmox" ]; then
|
|
echo " ✅ mcp-proxmox directory exists"
|
|
if [ -f "$SCRIPT_DIR/mcp-proxmox/index.js" ]; then
|
|
echo " ✅ index.js exists"
|
|
else
|
|
echo " ❌ index.js not found"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
if [ -f "$SCRIPT_DIR/mcp-proxmox/package.json" ]; then
|
|
echo " ✅ package.json exists"
|
|
else
|
|
echo " ❌ package.json not found"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
else
|
|
echo " ❌ mcp-proxmox directory not found"
|
|
echo " 💡 Run: git submodule update --init --recursive"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
|
|
# Check 4: Frontend submodule
|
|
echo ""
|
|
echo "4. Checking ProxmoxVE/frontend submodule..."
|
|
if [ -d "$SCRIPT_DIR/ProxmoxVE/frontend" ]; then
|
|
echo " ✅ ProxmoxVE/frontend directory exists"
|
|
if [ -f "$SCRIPT_DIR/ProxmoxVE/frontend/package.json" ]; then
|
|
echo " ✅ package.json exists"
|
|
else
|
|
echo " ❌ package.json not found"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
else
|
|
echo " ⚠️ ProxmoxVE/frontend directory not found (optional)"
|
|
fi
|
|
|
|
# Check 5: Dependencies installed
|
|
echo ""
|
|
echo "5. Checking dependencies..."
|
|
if [ -d "$SCRIPT_DIR/node_modules" ] || [ -d "$SCRIPT_DIR/mcp-proxmox/node_modules" ]; then
|
|
echo " ✅ Dependencies appear to be installed"
|
|
echo " 💡 Run: pnpm install (if unsure)"
|
|
else
|
|
echo " ⚠️ Dependencies may not be installed"
|
|
echo " 💡 Run: pnpm install"
|
|
fi
|
|
|
|
# Check 6: .env file
|
|
echo ""
|
|
echo "6. Checking .env configuration..."
|
|
if [ -f "$ENV_FILE" ]; then
|
|
echo " ✅ .env file exists at $ENV_FILE"
|
|
|
|
# Check for required variables
|
|
MISSING_VARS=0
|
|
if ! grep -q "^PROXMOX_HOST=" "$ENV_FILE" 2>/dev/null || grep -q "^PROXMOX_HOST=your-proxmox" "$ENV_FILE" 2>/dev/null; then
|
|
echo " ⚠️ PROXMOX_HOST not configured"
|
|
MISSING_VARS=$((MISSING_VARS + 1))
|
|
fi
|
|
if ! grep -q "^PROXMOX_TOKEN_VALUE=" "$ENV_FILE" 2>/dev/null || grep -q "^PROXMOX_TOKEN_VALUE=your-token" "$ENV_FILE" 2>/dev/null; then
|
|
echo " ⚠️ PROXMOX_TOKEN_VALUE not configured"
|
|
MISSING_VARS=$((MISSING_VARS + 1))
|
|
fi
|
|
|
|
if [ $MISSING_VARS -eq 0 ]; then
|
|
echo " ✅ Required environment variables appear configured"
|
|
else
|
|
echo " ⚠️ Some environment variables need to be configured"
|
|
fi
|
|
else
|
|
echo " ⚠️ .env file not found at $ENV_FILE"
|
|
echo " 💡 Run: ./setup.sh or copy .env.example to $ENV_FILE"
|
|
fi
|
|
|
|
# Check 7: Claude Desktop config
|
|
echo ""
|
|
echo "7. Checking Claude Desktop configuration..."
|
|
if [ -f "$CLAUDE_CONFIG" ]; then
|
|
echo " ✅ Claude Desktop config exists"
|
|
if grep -q "proxmox" "$CLAUDE_CONFIG" 2>/dev/null; then
|
|
echo " ✅ Proxmox MCP server configured"
|
|
else
|
|
echo " ⚠️ Proxmox MCP server may not be configured"
|
|
fi
|
|
else
|
|
echo " ⚠️ Claude Desktop config not found"
|
|
echo " 💡 Run: ./setup.sh"
|
|
fi
|
|
|
|
# Check 8: Node.js and pnpm
|
|
echo ""
|
|
echo "8. Checking Node.js and pnpm..."
|
|
if command -v node &> /dev/null; then
|
|
NODE_VERSION=$(node --version)
|
|
echo " ✅ Node.js installed: $NODE_VERSION"
|
|
|
|
# Check version
|
|
NODE_MAJOR=$(echo "$NODE_VERSION" | cut -d'.' -f1 | sed 's/v//')
|
|
if [ "$NODE_MAJOR" -ge 16 ]; then
|
|
echo " ✅ Node.js version 16+ (required)"
|
|
else
|
|
echo " ⚠️ Node.js version should be 16+"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
else
|
|
echo " ❌ Node.js not found"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
|
|
if command -v pnpm &> /dev/null; then
|
|
PNPM_VERSION=$(pnpm --version)
|
|
echo " ✅ pnpm installed: $PNPM_VERSION"
|
|
else
|
|
echo " ❌ pnpm not found"
|
|
echo " 💡 Install with: npm install -g pnpm"
|
|
ERRORS=$((ERRORS + 1))
|
|
fi
|
|
|
|
# Summary
|
|
echo ""
|
|
echo "===================================="
|
|
if [ $ERRORS -eq 0 ]; then
|
|
echo "✅ Setup verification complete - no critical errors found!"
|
|
echo ""
|
|
echo "Next steps:"
|
|
echo " • Test MCP server: pnpm test:basic"
|
|
echo " • Start MCP server: pnpm mcp:start"
|
|
echo " • Start frontend: pnpm frontend:dev"
|
|
exit 0
|
|
else
|
|
echo "⚠️ Found $ERRORS critical error(s)"
|
|
echo ""
|
|
echo "Please fix the errors above before proceeding."
|
|
exit 1
|
|
fi
|
|
|