#!/bin/bash
set -e
software=$1
if [ -z $1 ]; then 
    echo 'please specify target software'
    echo 'input can be either '
    echo 'listdeps <name>'
    echo 'OR'
    echo 'listdeps <name> <version>'
    exit 1
fi
version=$2
if [ ! -z ${version} ]; then
    version=( $version )
else 
    version=( $(ls /usr/local/Modules/modulefiles/$software) )
fi 

mkdir -p $software
for ver in ${version[@]}; do touch $software/$ver;done

for i in $(ls -d /usr/local/*/); do
    name=$(basename $i)
    if [[ -r "/usr/local/Modules/modulefiles/$name" ]]; then
        vers=$(ls /usr/local/Modules/modulefiles/$name)
    fi 
    for ver in ${vers[@]}; do
        load_ver=$(module show $name/$ver 2>&1 | sed -n "s/module.*load\ ${software}\/\(.*\)/\1/p")
        if [ ! -z $load_ver ] && [ -f $software/$load_ver ]; then 
            echo $name/$ver >> $software/$load_ver
        fi
    done
done
set +e