#!/usr/bin/bash
# This script is used to get the latest version number of a module in the tcltk library

if [ $# -ne 1 ]
then
    echo "Usage: version_no_get module_name"
    exit 1
fi

version_compare() {
    V1=$1
    [[ ${V1} =~ ([0-9]+)\.([0-9]+)\.([0-9]+) ]] || [[ ${V1} =~ ([0-9]+)\.([0-9]+) ]]   

    V1_MAJOR=${BASH_REMATCH[1]}
    V1_MINOR=${BASH_REMATCH[2]}
    V1_PATCH=${BASH_REMATCH[3]}
    if [[ "$V1_PATCH" == "" ]]
    then
        V1_PATCH=0
    fi

    V2=$2
    [[ ${V2} =~ ([0-9]+)\.([0-9]+)\.([0-9]+) ]] || [[ ${V2} =~ ([0-9]+)\.([0-9]+) ]]
    V2_MAJOR=${BASH_REMATCH[1]}
    V2_MINOR=${BASH_REMATCH[2]}
    V2_PATCH=${BASH_REMATCH[3]}
    if [[ "$V2_PATCH" == "" ]]
    then
        V2_PATCH=0
    fi
    
    if [ ${V2_MAJOR} -gt ${V1_MAJOR} ] 
    then
        return 0
    elif [[ ${V2_MAJOR} -eq ${V1_MAJOR} && ${V2_MINOR} -gt ${V1_MINOR} ]]
    then
        return 0
    elif [[ ${V2_MAJOR} -eq ${V1_MAJOR} && ${V2_MINOR} -eq ${V1_MINOR} && ${V2_PATCH} -gt ${V1_PATCH} ]]
    then
        return 0
    else
        return 1
    fi   
}

MODULE_NAME=$1
SOURCE_DIRECTORY=/usr/lib/tcltk/tcl8/site-tcl
VERSION="0.0.0"

for module_file in $(find ${SOURCE_DIRECTORY}/ -type f -name "${MODULE_NAME}*.tm")
do
    FILENAME=$(basename ${module_file})
    [[ ${FILENAME} =~ -([0-9]+\.[0-9]+\.[0-9]+)\.tm ]] || [[ ${FILENAME} =~ -([0-9]+\.[0-9]+)\.tm ]]
    VERSION_NEW=${BASH_REMATCH[1]}    
    version_compare ${VERSION} ${VERSION_NEW}
    if [[ $? -eq 0 ]]
    then
        VERSION=${VERSION_NEW}
    fi    
done

echo "${VERSION}"
