Files
gh-jezweb-claude-skills-ski…/scripts/check-versions.sh
2025-11-30 08:24:49 +08:00

103 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# FastMCP Version Checker
# Verifies that FastMCP and dependencies are up to date
set -e
echo "======================================"
echo "FastMCP Version Checker"
echo "======================================"
echo ""
# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# Check if Python is installed
if ! command -v python3 &> /dev/null; then
echo -e "${RED}${NC} Python 3 is not installed"
exit 1
fi
echo -e "${GREEN}${NC} Python $(python3 --version)"
echo ""
# Check Python version
PYTHON_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')
REQUIRED_VERSION="3.10"
if [ "$(printf '%s\n' "$REQUIRED_VERSION" "$PYTHON_VERSION" | sort -V | head -n1)" != "$REQUIRED_VERSION" ]; then
echo -e "${RED}${NC} Python $PYTHON_VERSION is too old. FastMCP requires Python $REQUIRED_VERSION or later"
exit 1
fi
echo -e "${GREEN}${NC} Python version $PYTHON_VERSION meets requirements"
echo ""
# Check if pip is installed
if ! command -v pip3 &> /dev/null; then
echo -e "${RED}${NC} pip3 is not installed"
exit 1
fi
echo "Checking package versions..."
echo ""
# Function to check package version
check_package() {
local package=$1
local min_version=$2
if pip3 show "$package" &> /dev/null; then
local installed_version=$(pip3 show "$package" | grep "Version:" | awk '{print $2}')
echo -e "${GREEN}${NC} $package: $installed_version (required: >=$min_version)"
# Note: This is a simple check. For production, use more robust version comparison
if [ "$installed_version" != "$min_version" ]; then
if [ "$(printf '%s\n' "$min_version" "$installed_version" | sort -V | head -n1)" != "$min_version" ]; then
echo -e " ${YELLOW}${NC} Installed version is older than minimum required"
fi
fi
else
echo -e "${RED}${NC} $package: Not installed (required: >=$min_version)"
fi
}
# Check core packages
check_package "fastmcp" "2.12.0"
check_package "httpx" "0.27.0"
check_package "python-dotenv" "1.0.0"
check_package "pydantic" "2.0.0"
echo ""
echo "Checking optional packages..."
echo ""
# Check optional packages
if pip3 show "psutil" &> /dev/null; then
check_package "psutil" "5.9.0"
else
echo -e "${YELLOW}${NC} psutil: Not installed (optional, for health checks)"
fi
if pip3 show "pytest" &> /dev/null; then
check_package "pytest" "8.0.0"
else
echo -e "${YELLOW}${NC} pytest: Not installed (optional, for testing)"
fi
echo ""
echo "======================================"
echo "Version check complete!"
echo "======================================"
echo ""
# Suggestions
echo "Suggestions:"
echo " - To update FastMCP: pip install --upgrade fastmcp"
echo " - To update all dependencies: pip install --upgrade -r requirements.txt"
echo " - To see outdated packages: pip list --outdated"
echo ""