From dc1ad90c70a16a6e2c4bebf0564140359ed100e6 Mon Sep 17 00:00:00 2001 From: Achim Gsell Date: Thu, 6 May 2021 11:28:10 +0200 Subject: [PATCH] modulecmd: align columns in sub-cmd avail --- Pmodules/modulecmd.bash.in | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) mode change 100755 => 100644 Pmodules/modulecmd.bash.in diff --git a/Pmodules/modulecmd.bash.in b/Pmodules/modulecmd.bash.in old mode 100755 new mode 100644 index f630ddf..a49cdb9 --- a/Pmodules/modulecmd.bash.in +++ b/Pmodules/modulecmd.bash.in @@ -875,14 +875,15 @@ subcommand_avail() { human_readable_output() { output_header - local -i column=$cols - local -i colsize=16 - for ((i=0; i<${#mods[@]}; i+=3 )); do + local -a available_modules=() + local mod='' + local -i max_length=1 + for ((i=0; i<${#mods[@]}; i+=3)); do if [[ ${verbosity_lvl} == 'verbose' ]]; then local release=${mods[i+1]} case ${mods[i+1]} in stable ) - mod=${mods[i]} + mod="${mods[i]}" ;; * ) mod="${mods[i]}(${release:0:1})" @@ -891,9 +892,17 @@ subcommand_avail() { else mod=${mods[i]} fi + local -i n=${#mod} + (( n > max_length )) && (( max_length=n )) + available_modules+=("${mod}") + done + IFS=$'\n' available_modules=($(sort <<<"${available_modules[*]}")) + unset IFS + local -i span=$(( max_length / 16 + 1 )) # compute column size + local -i colsize=$(( span * 16 )) # as multiple of 16 + local -i column=$cols # force a line-break + for mod in "${available_modules[@]}"; do local -i len=${#mod} - local -i span=$(( len / 16 + 1 )) - local -i colsize=$(( span * 16 )) if (( column+len >= cols )); then printf -- "\n" 1>&2 column=0