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