#!/usr/bin/bash

if [ $# -ne 4 ];
then
    echo "Usage: tcl-module-create module_name version source_directory dest_directory"
    exit 1
fi


MODULE_NAME=$1
VERSION=$2
SOURCE_DIRECTORY=$3
DESTINATION_DIRECTORY=$4
OUTPUT_FILE=${DESTINATION_DIRECTORY}/${MODULE_NAME}-${VERSION}.tm
TMP_FILE=/tmp/${MODULE_NAME}-${VERSION}.tm

if ! [[  $MODULE_NAME =~ ^[a-z0-9_]+$ ]];
then
    echo "Module name must be lowercase and contain only letters, numbers and underscores"
    exit 1
fi

if [ -f ${OUTPUT_FILE} ];
then
    echo "Tcl module file for ${VERSION} already exists in the destination directory."
    exit 1
fi

rm -rf ${TMP_FILE}

echo "package provide ${MODULE_NAME} ${VERSION}" >> ${TMP_FILE}
echo "" >> ${TMP_FILE}
echo "proc ${MODULE_NAME}_version {} { return ${VERSION} }" >> ${TMP_FILE}
echo "" >> ${TMP_FILE}
for tcl_file in `find ${SOURCE_DIRECTORY}/ -type f -name "*.tcl" | env -i LC_COLLATE=C sort`
do    
    cat $tcl_file >> ${TMP_FILE}
    echo "" >> ${TMP_FILE}
done

mv ${TMP_FILE} ${OUTPUT_FILE}

