]> git.tuebingen.mpg.de Git - gsu.git/blobdiff - subcommand
subcommand: Simplify gsu().
[gsu.git] / subcommand
index 32ca366aef022737089f8736d99bab9e5721d24f..6011ee68aad6b88103455167ea129008da1ec792 100644 (file)
@@ -100,7 +100,8 @@ 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()
+
+com_prefs()
 {
        local i conf="${gsu_config_file:=${HOME:-}/.$gsu_name.rc}"
 
@@ -158,19 +159,20 @@ Print the manual.
 
 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"
@@ -182,16 +184,16 @@ _com_man()
        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="
@@ -216,7 +218,7 @@ written to stdout. This can be used from the completion function of
 the subcommand.
 "
 
-_com_help()
+com_help()
 {
        local a b ere tab='     '
 
@@ -398,7 +400,7 @@ gsu_getopts()
        ret=$GSU_SUCCESS
 }
 
-_com_complete()
+com_complete()
 {
        local cmd n cword
        local -a words
@@ -537,29 +539,14 @@ gsu()
        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