_gsu_print_available_commands()
{
- local cmd
+ local cmd cmds
local -i count=0
+ _gsu_available_commands
+ cmds="$result"
printf 'Available commands:\n'
- for cmd in $gsu_cmds; do
+ for cmd in $cmds; do
printf '%s' "$cmd"
let ++count
if (($count % 4)); then
Usage: prefs [-e]
-If -e is given, the config file is opened with the default editor. Without
-options, the command prints out a list of all cmt config variables, together
-with their current value and the default value."
-_com_prefs()
+If -e is given, the config file is opened with the default editor.
+Without options, the command prints out a list of all config variables,
+together with their current value and the default value.
+"
+
+com_prefs()
{
local i conf="${gsu_config_file:=${HOME:-}/.$gsu_name.rc}"
Usage: man"
-_com_man()
+
+com_man()
{
local equal_signs="=================================================="
local minus_signs="--------------------------------------------------"
- local com num
+ local com num
echo "$gsu_name (_${gsu_banner_txt}_) manual"
echo "${equal_signs:0:${#gsu_name} + ${#gsu_banner_txt} + 16}"
echo
- sed -e '1,/^#\{70,\}/d' -e '/^#\{70,\}/,$d' $0 -e 's/^# *//'
+ sed -e '1,/^#\{70,\}/d' -e '/^#\{70,\}/,$d' $0 -e 's/^# *//'
echo "----"
- echo
+ echo
echo "$gsu_name usage"
echo "${minus_signs:0:${#gsu_name} + 6}"
printf "\t"
echo "Available commands:"
_gsu_available_commands
- for com in $result; do
+ for com in $result; do
num=${#com}
(($num < 4)) && num=4
- echo "${minus_signs:0:$num}"
- echo "$com"
- echo "${minus_signs:0:$num}"
- $0 help $com
+ echo "${minus_signs:0:$num}"
+ echo "$com"
+ echo "${minus_signs:0:$num}"
+ $0 help $com
echo
- done
- ret=$GSU_SUCCESS
+ done
+ ret=$GSU_SUCCESS
}
export gsu_help_txt="
the subcommand.
"
-_com_help()
+com_help()
{
local a b ere tab=' '
ret=$GSU_SUCCESS
}
-_com_complete()
+com_complete()
{
local cmd n cword
local -a words
gsu()
{
local i
- _gsu_available_commands
- gsu_cmds="$result"
+
if (($# == 0)); then
_gsu_usage
_gsu_print_available_commands
fi
arg="$1"
shift
- # check internal commands
- if [[ "$arg" = "help" || "$arg" = "man" || "$arg" = "prefs" || "$arg" = "complete" ]]; then
- _com_$arg "$@"
+ if [[ "$(type -t com_$arg)" == 'function' ]]; then
+ com_$arg "$@"
if (("$ret" < 0)); then
gsu_err_msg
exit 1
fi
exit 0
fi
-
- # external commands
- for i in $gsu_cmds; do
- if test "$arg" = "$i"; then
- ret=$GSU_SUCCESS
- com_$arg "$@"
- if (("$ret" < 0)); then
- gsu_err_msg
- exit 1
- fi
- exit 0
- fi
- done
-
ret=-$E_GSU_BAD_COMMAND
result="$arg"
gsu_err_msg