From 96a7ca406a3720c0bf20803b3bcc8af64dd91ceb Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Mon, 19 Apr 2021 15:12:50 +0200 Subject: [PATCH] modulecmd: use upvar to return avail modules --- Pmodules/modulecmd.bash.in | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/Pmodules/modulecmd.bash.in b/Pmodules/modulecmd.bash.in index a7d220d..ba2e4fc 100755 --- a/Pmodules/modulecmd.bash.in +++ b/Pmodules/modulecmd.bash.in @@ -741,17 +741,17 @@ subcommand_show() { # modulename1 release1 modulename2 release2 ... # get_available_modules() { - local -r module="$1" - local -r use_releases="${2:-${UsedReleases}}" - shift 2 - local -a dirs=( "$@" ) + local var="$1" + local -r module="$2" + local -r use_releases="${3:-${UsedReleases}}" + shift 3 # in the for loop below we use $@ to loop over the directories local -a mods=() local release local dir='' - for dir in "${dirs[@]}"; do - test -d "${dir}" || return 0 + for dir in "$@"; do + test -d "${dir}" || continue { cd "${dir}" while read mod; do @@ -763,7 +763,7 @@ get_available_modules() { done < <(${find} -L * \( -type f -o -type l \) -not -name ".*" -ipath "${module}*") } done - echo "${mods[@]}" + std::upvar ${var} "${mods[@]}" } ############################################################################## @@ -945,10 +945,11 @@ subcommand_avail() { local string for string in "${pattern[@]}"; do for dir in "${modulepath[@]}"; do - mods=( $( get_available_modules \ - "${string}" \ - "${opt_use_releases}" \ - "${dir}" ) ) + get_available_modules \ + mods \ + "${string}" \ + "${opt_use_releases}" \ + "${dir}" [[ ${#mods[@]} == 0 ]] && continue ${output_function} done @@ -1732,11 +1733,12 @@ subcommand_search() { # with respect to the requested releases # tmpfile: module/version release group group- # dependencies... - local mods=( $( get_available_modules \ - "${module}" \ - "${opt_use_releases}" \ - "${modulepath[@]}" \ - ) ) + local mods + get_available_modules \ + mods \ + "${module}" \ + "${opt_use_releases}" \ + "${modulepath[@]}" \ for (( i=0; i<${#mods[@]}; i+=3 )); do local name=${mods[i]}