123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- #!/bin/bash
- # MongoDB Version Manager
- # Helps manage MongoDB server binaries for different versions (3-8)
- # This script provides utilities for adding and managing MongoDB server versions
- # Source settings
- source $SNAP/bin/wekan-read-settings
- # MongoDB version information
- declare -A MONGO_VERSIONS=(
- ["3"]="3.2.22"
- ["4"]="4.4.28"
- ["5"]="5.0.28"
- ["6"]="6.0.15"
- ["7"]="7.0.25"
- ["8"]="8.0.4"
- )
- # MongoDB binary paths
- declare -A MONGO_PATHS=(
- ["3"]="/snap/${SNAP_NAME}/current/migratemongo/bin"
- ["4"]="/snap/${SNAP_NAME}/current/mongodb4/bin"
- ["5"]="/snap/${SNAP_NAME}/current/mongodb5/bin"
- ["6"]="/snap/${SNAP_NAME}/current/mongodb6/bin"
- ["7"]="/snap/${SNAP_NAME}/current/bin"
- ["8"]="/snap/${SNAP_NAME}/current/mongodb8/bin"
- )
- # Check which MongoDB versions are available
- check_available_versions() {
- echo "=== Available MongoDB Server Versions ==="
- for version in "${!MONGO_VERSIONS[@]}"; do
- local path="${MONGO_PATHS[$version]}"
- if [ -f "$path/mongod" ]; then
- echo "✓ MongoDB $version.x (${MONGO_VERSIONS[$version]}) - Available at $path"
- else
- echo "✗ MongoDB $version.x (${MONGO_VERSIONS[$version]}) - Not available at $path"
- fi
- done
- echo ""
- }
- # Check which MongoDB Node.js drivers are available
- check_available_drivers() {
- echo "=== Available MongoDB Node.js Drivers ==="
- if [ -f "/home/wekan/repos/wekan/package.json" ]; then
- for version in "${!MONGO_VERSIONS[@]}"; do
- if grep -q "mongodb${version}legacy" "/home/wekan/repos/wekan/package.json"; then
- echo "✓ MongoDB $version.x Node.js driver - Available (mongodb${version}legacy)"
- else
- echo "✗ MongoDB $version.x Node.js driver - Not available"
- fi
- done
- else
- echo "package.json not found"
- fi
- echo ""
- }
- # Show current active MongoDB version
- show_active_version() {
- if [ -f "${SNAP_COMMON}/mongodb-active-version" ]; then
- local active_version=$(cat "${SNAP_COMMON}/mongodb-active-version")
- echo "=== Current Active MongoDB Version ==="
- echo "Active Version: MongoDB $active_version.x"
- echo "Version File: ${SNAP_COMMON}/mongodb-active-version"
- echo ""
- else
- echo "=== Current Active MongoDB Version ==="
- echo "No active version file found (will use default MongoDB 7.x)"
- echo ""
- fi
- }
- # Show version detection log
- show_detection_log() {
- if [ -f "${SNAP_COMMON}/mongodb-version-detection.log" ]; then
- echo "=== MongoDB Version Detection Log ==="
- tail -20 "${SNAP_COMMON}/mongodb-version-detection.log"
- echo ""
- else
- echo "=== MongoDB Version Detection Log ==="
- echo "No detection log found"
- echo ""
- fi
- }
- # Force version detection
- force_detection() {
- echo "=== Forcing MongoDB Version Detection ==="
- rm -f "${SNAP_COMMON}/mongodb-active-version"
- echo "Cleared cached version. Next MongoDB restart will detect version automatically."
- echo ""
- }
- # Show help
- show_help() {
- echo "MongoDB Version Manager"
- echo ""
- echo "Usage: $0 [command]"
- echo ""
- echo "Commands:"
- echo " versions - Show available MongoDB server versions"
- echo " drivers - Show available MongoDB Node.js drivers"
- echo " active - Show current active MongoDB version"
- echo " log - Show version detection log"
- echo " detect - Force version detection on next restart"
- echo " help - Show this help message"
- echo ""
- echo "Examples:"
- echo " $0 versions # Check which MongoDB versions are available"
- echo " $0 active # Show which version is currently active"
- echo " $0 detect # Force re-detection on next restart"
- echo ""
- }
- # Main command handling
- case "${1:-help}" in
- "versions")
- check_available_versions
- ;;
- "drivers")
- check_available_drivers
- ;;
- "active")
- show_active_version
- ;;
- "log")
- show_detection_log
- ;;
- "detect")
- force_detection
- ;;
- "help"|*)
- show_help
- ;;
- esac
|