From: Andre Noll Date: Sun, 5 Mar 2017 21:13:53 +0000 (+0100) Subject: subcommand: Simplify gsu(). X-Git-Url: http://git.tuebingen.mpg.de/?p=gsu.git;a=commitdiff_plain;h=d0aaa237127d4466766d1aa92e62f4466c2e908d;ds=sidebyside subcommand: Simplify gsu(). There is no need to special-case the four autocommands in the main entry function gsu(). Dropping the undercore in the name of the four command handlers allows to treat them in the same way as the subcommands which are provided by the application. --- diff --git a/subcommand b/subcommand index 198ce16..6011ee6 100644 --- a/subcommand +++ b/subcommand @@ -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,7 +159,8 @@ Print the manual. Usage: man" -_com_man() + +com_man() { local equal_signs="==================================================" local minus_signs="--------------------------------------------------" @@ -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