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.
Without options, the command prints out a list of all config variables,
together with their current value and the default value.
"
Without options, the command prints out a list of all config variables,
together with their current value and the default value.
"
{
local i conf="${gsu_config_file:=${HOME:-}/.$gsu_name.rc}"
{
local i conf="${gsu_config_file:=${HOME:-}/.$gsu_name.rc}"
{
local equal_signs="=================================================="
local minus_signs="--------------------------------------------------"
{
local equal_signs="=================================================="
local minus_signs="--------------------------------------------------"
{
local cmd n cword
local -a words
{
local cmd n cword
local -a words
- # 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
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
ret=-$E_GSU_BAD_COMMAND
result="$arg"
gsu_err_msg