From cade57f7cdd3e794b6a33a5f21a63126d1c05421 Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Tue, 8 Aug 2017 01:11:43 +0200 Subject: [PATCH] Pmodules/modulecmd.bash.in - sub-commands 'avail' and 'search' are now case insensitive and accept a shell pattern as argument --- Pmodules/modulecmd.bash.in | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Pmodules/modulecmd.bash.in b/Pmodules/modulecmd.bash.in index d05e1c6..33406f9 100755 --- a/Pmodules/modulecmd.bash.in +++ b/Pmodules/modulecmd.bash.in @@ -964,6 +964,23 @@ get_available_modules() { echo "${mods[@]}" } +get_available_modules2() { + local -r dir=$1 + local -r module=$2 + local -r use_releases=${3:-${UsedReleases}} + local -a mods=() + { + cd "${dir}" + while read mod; do + local release=$( get_release "${dir}/${mod}" ) + + if [[ :${use_releases}: =~ :${release}: ]]; then + mods+=( "${mod}" ${release} ) + fi + done < <(find * \( -type f -o -type l \) -not -name ".*" -ipath "${module}*") + } + echo "${mods[@]}" +} # # avail [-hlt] [...] # @@ -1130,7 +1147,7 @@ subcommand_avail() { IFS=${saved_IFS} for string in "${pattern[@]}"; do for dir in "${modulepath[@]}"; do - mods=( $( get_available_modules "${dir}" "${string}" "${opt_use_releases}" ) ) + mods=( $( get_available_modules2 "${dir}" "${string}" "${opt_use_releases}" ) ) [[ ${#mods[@]} == 0 ]] && continue ${output_function} @@ -1648,7 +1665,7 @@ subcommand_search() { # get and print all available modules in $mpath # with respect to the requested releases # tmpfile: module/version release group group-dependencies... - local mods=( $( get_available_modules \ + local mods=( $( get_available_modules2 \ "${mpath}" \ "${module}" \ "${opt_use_releases}" ) )