From d0aaa237127d4466766d1aa92e62f4466c2e908d Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 5 Mar 2017 22:13:53 +0100 Subject: [PATCH] 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. --- subcommand | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) 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 -- 2.39.2