X-Git-Url: http://git.tuebingen.mpg.de/?a=blobdiff_plain;f=subcommand;h=261e35f5e39b6f377529c24a136427106d6301cb;hb=32134f1512eab90da01e9cfd9f676bffef27a939;hp=05860f68395f67ffd3e9a51a60e48eb857a9cca8;hpb=ed4541e12d830109204e66ac8c76750d3693eeff;p=gsu.git diff --git a/subcommand b/subcommand index 05860f6..261e35f 100644 --- a/subcommand +++ b/subcommand @@ -1,9 +1,11 @@ #!/bin/bash -# (C) 2006-2011 Andre Noll +# Copyright (C) 2006 Andre Noll +# Licensed under the LGPL, version 3. See COPYING and COPYING.LESSER. -if [[ $(type -t gsu_is_a_number) != "function" ]]; then - GSU_DIR=${GSU_DIR:=${HOME-}/.gsu} - . $GSU_DIR/common || exit 1 +if [[ "$(type -t _gsu_setup)" != "function" ]]; then + gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}} + . $gsu_dir/common || exit 1 + _gsu_setup fi _gsu_usage() @@ -49,25 +51,26 @@ _gsu_available_commands() } _gsu_print_available_commands() -{( - local i count=0 - gsu_short_msg "Available commands:" - for i in $gsu_cmds; do - printf "$i" - count=$(($count + 1)) - if test $(($count % 4)) -eq 0; then - echo +{ + local cmd + local -i count=0 + + printf 'Available commands:\n' + for cmd in $gsu_cmds; do + printf '%s' "$cmd" + let ++count + if (($count % 4)); then + printf '\t' + ((${#cmd} < 8)) && printf '\t' else - printf "\t" - if test ${#i} -lt 8; then - printf "\t" - fi + printf '\n' fi done - echo -) 2>&1 + printf '\n' } +# Print all options of the given optstring to stdout if the word in the current +# command line begins with a hyphen character. gsu_complete_options() { local opts="$1" cword="$2" cur opt @@ -314,7 +317,7 @@ complete_help() # Aborts on programming errors such as missing or invalid option string. On # success $result contains shell code that can be eval'ed. For each defined # option x, the local variable o_x will be created when calling eval "$result". -# o_x contains true/false for options without argument and either the emtpy +# o_x contains true/false for options without argument and either the empty # string or the given argument for options that take an argument. # # Example: @@ -524,7 +527,6 @@ gsu_get_unnamed_arg_num() gsu() { local i - _gsu_setup _gsu_available_commands gsu_cmds="$result" if (($# == 0)); then @@ -547,6 +549,7 @@ gsu() # 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 @@ -574,8 +577,7 @@ gsu() # 0 0 no argument allowed # 1 1 exactly one argument required # 0 2 at most two arguments admissible -# 2 at least two arguments reqired -# +# 2 at least two arguments required gsu_check_arg_count() { ret=-$E_GSU_BAD_ARG_COUNT