diff --git a/Pmodules/modulecmd.bash.in b/Pmodules/modulecmd.bash.in index 20359ff..5492772 100644 --- a/Pmodules/modulecmd.bash.in +++ b/Pmodules/modulecmd.bash.in @@ -945,6 +945,7 @@ get_available_modules() { # implementations. local entries=$(echo *) [[ -n ${entries} ]] || continue + local mod='' # module_name/module_version while read mod; do local add='no' if [[ -n "${ol}" ]]; then @@ -980,7 +981,7 @@ get_available_modules() { "${mod}" [[ :${used_rel_stages}: =~ :${rel_stage}: ]] || continue - mods+=( "${mod}" ${rel_stage} "${dir}/${mod}" ) + mods+=( "${mod}" ${rel_stage} "${dir}/${mod}" "${ol}" ) dict[${mod}]=1 done < <(${find} -L ${entries} \ \( -type f -o -type l \) \ @@ -1073,7 +1074,7 @@ find_module() { "${dir}" \ "${mod}" std::upvar $2 "${rel_stage}" - [[ :${release}: =~ :${UsedReleaseStages}: ]] && \ + [[ :${rel_stage}: =~ :${UsedReleaseStages}: ]] && \ return 0 done done @@ -1144,7 +1145,7 @@ subcommand_avail() { terse_output() { output_header "$1" local -i i=0 - for (( i=0; i<${#mods[@]}; i+=3 )); do + for (( i=0; i<${#mods[@]}; i+=4 )); do local mod=${mods[i]} local rel_stage=${mods[i+1]} case ${rel_stage} in @@ -1162,7 +1163,7 @@ subcommand_avail() { #...................................................................... machine_output() { - for (( i=0; i<${#mods[@]}; i+=3 )); do + for (( i=0; i<${#mods[@]}; i+=4 )); do printf "%-20s\t%s\n" "${mods[i]}" "${mods[i+1]}" 1>&2 done } @@ -1171,7 +1172,7 @@ subcommand_avail() { # :FIXME: for the time being, this is the same as terse_output! long_output() { output_header "$1" - for (( i=0; i<${#mods[@]}; i+=3 )); do + for (( i=0; i<${#mods[@]}; i+=4 )); do local mod=${mods[i]} local rel_stage=${mods[i+1]} case ${rel_stage} in @@ -1194,7 +1195,7 @@ subcommand_avail() { local -a available_modules=() local mod='' local -i max_length=1 - for ((i=0; i<${#mods[@]}; i+=3)); do + for ((i=0; i<${#mods[@]}; i+=4)); do if [[ ${verbosity_lvl} == 'verbose' ]]; then local rel_stage=${mods[i+1]} case ${rel_stage} in @@ -2141,7 +2142,7 @@ subcommand_search() { local fmt='' print_default() { - fmt="%-${max_len_modulename}s %-10s %-12s %-s" + fmt="%-${max_len_modulename}s %-10s %-12s %-12s %-s" if [[ ${opt_print_header} == 'yes' ]]; then func_print_header='print_header_default' else @@ -2152,7 +2153,7 @@ subcommand_search() { print_header_default() { std::info '' - std::info "${fmt}" "Module" "Rel.stage" "Group" "Requires" + std::info "${fmt}" "Module" "Rel.stage" "Group" "Overlay" "Requires" std::info '-%.0s' $(seq 1 ${cols}) } @@ -2165,12 +2166,12 @@ subcommand_search() { std::info "${str}" } if [[ "${opt_wrap}" == 'no' ]]; then - local deps="${@:5}" - local str=$(printf "${fmt}" "$1" "$2" "$3" "${deps[@]}") + local deps="${@:6}" + local str=$(printf "${fmt}" "$1" "$2" "$3" "$5" "${deps[@]}") write_line "${str}" else - local deps=( "${@:5}" ) - local str=$(printf "${fmt}" "$1" "$2" "$3" "${deps[0]}") + local deps=( "${@:6}" ) + local str=$(printf "${fmt}" "$1" "$2" "$3" "$5" "${deps[0]}") for (( i = 1; i < ${#deps[@]}; i++ )); do if (( ${#str} + ${#deps[i]} + 1 <= cols )); then str+=" ${deps[i]}" @@ -2184,21 +2185,26 @@ subcommand_search() { } print_verbose() { - fmt="%-${max_len_modulename}s %-10s %-12s %-s" + fmt="%-${max_len_modulename}s %-12s %-14s %-s" func_print_header='print_header_verbose' func_print_line='print_line_verbose' } print_header_verbose() { std::info '' - std::info "${fmt}" "Module" "Rel.stage" "Group" "Dependencies/Modulefile" - std::info '-%.0s' $(seq 1 ${cols}) + #std::info "${fmt}" "Module" "Rel.stage" "Group" "Overlay" "Dependencies/Modulefile" + #std::info '-%.0s' $(seq 1 ${cols}) } print_line_verbose() { - local deps="${@:5}" - std::info "${fmt}" "$1" "$2" "$3" "dependencies: ${deps}" - std::info "${fmt}" "" "" "" "modulefile: $4" + local deps="${@:6}" + [[ -z ${deps} ]] && deps="(none)" + std::info "$1:" + std::info " release stage: $2" + std::info " group: $3" + std::info " overlay: $5" + std::info " modulefile: $4" + std::info " dependencies: ${deps}" } # print full modulefile names only @@ -2282,10 +2288,11 @@ subcommand_search() { "${opt_use_rel_stages}" \ "${modulepath[@]}" \ - for (( i=0; i<${#mods[@]}; i+=3 )); do + for (( i=0; i<${#mods[@]}; i+=4 )); do local name=${mods[i]} local rel_stage=${mods[i+1]} local modulefile=${mods[i+2]} + local ol=${mods[i+3]} if (( ${#name} > max_len_modulename)); then max_len_modulename=${#name} @@ -2313,6 +2320,7 @@ subcommand_search() { fi echo ${name} ${rel_stage} ${group} ${modulefile} \ + ${ol} \ ${deps[@]} >> "${tmpfile}" done done