_gsu_print_available_commands()
{
local cmd cmds
- local -i count=0
+ local -i maxlen=0 cols width=80 count=0
+ result=$(stty size 2>/dev/null)
+ if (($? == 0)); then
+ gsu_is_a_number "${result#* }"
+ ((ret >= 0)) && ((result > 0)) && width=$result
+ fi
_gsu_available_commands
- cmds="$result"
- printf 'Available commands:\n'
+ cmds=$result
+ for cmd in $cmds; do
+ ((${#cmd} > maxlen)) && maxlen=${#cmd}
+ done
+ let maxlen++
+ ((width < maxlen)) && cols=1 || cols=$((width / maxlen))
+ printf 'Available commands:'
for cmd in $cmds; do
- printf '%s' "$cmd"
+ ((count % cols == 0)) && printf '\n'
+ printf '%-*s' $maxlen $cmd
let ++count
- if ((count % 4)); then
- printf '\t'
- ((${#cmd} < 8)) && printf '\t'
- else
- printf '\n'
- fi
done
printf '\n'
}