#!/bin/bash # TAK Server Version Detection Script set -e # Find the latest takserver-docker-X.Y-RELEASE-Z.zip file find_latest_tak_release() { local takserver_dir="$1" if [ ! -d "$takserver_dir" ]; then echo "ERROR: Directory $takserver_dir does not exist" return 1 fi local latest_zip=$(find "$takserver_dir" -name "takserver-docker-*-RELEASE-*.zip" -type f | \ sed -n 's/.*takserver-docker-\([0-9]\+\.[0-9]\+\)-RELEASE-\([0-9]\+\)\.zip/\1.\2 &/p' | \ sort -V | tail -1 | cut -d' ' -f2-) if [ -z "$latest_zip" ]; then echo "ERROR: No takserver-docker-X.Y-RELEASE-Z.zip file found in $takserver_dir" return 1 fi echo "$latest_zip" } # Extract version information get_tak_version() { local zip_file="$1" local version=$(basename "$zip_file" | sed -n 's/takserver-docker-\([0-9]\+\.[0-9]\+\)-RELEASE-\([0-9]\+\)\.zip/\1-\2/p') echo "$version" } # List all available TAK releases list_tak_releases() { local takserver_dir="$1" echo "Available TAK server releases:" find "$takserver_dir" -name "takserver-docker-*-RELEASE-*.zip" -type f | while read -r file; do local version=$(get_tak_version "$file") echo " - $(basename "$file") (version: $version)" done } # Main execution if script is run directly if [ "${BASH_SOURCE[0]}" == "${0}" ]; then TAKSERVER_DIR="${1:-/takserver-zip}" case "${2:-latest}" in "latest") find_latest_tak_release "$TAKSERVER_DIR" ;; "list") list_tak_releases "$TAKSERVER_DIR" ;; "version") if [ -n "$3" ]; then get_tak_version "$3" else echo "Usage: $0 version " exit 1 fi ;; *) echo "Usage: $0 [latest|list|version ]" exit 1 ;; esac fi