wekan/snap-src/bin/mongodb-version-manager
Lauri Ojansivu b949357e66 Snap MongoDB Server 3-8 support. Part 1.
Thanks to xet7 !
2025-10-11 11:54:14 +03:00

138 lines
4.1 KiB
Bash
Executable file

#!/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