X-Git-Url: http://git.tuebingen.mpg.de/?p=gsu.git;a=blobdiff_plain;f=subcommand;h=198ce164f5595ec3fd607b394b28d7ec99a9f349;hp=bded36d1514a09a4c3ed61dc72d11095e470d7b8;hb=de1b465459cce24580fc979a9448fb0f71245c11;hpb=521b9d7584ff363b9af24f33e0afb1e954da854a diff --git a/subcommand b/subcommand index bded36d..198ce16 100644 --- a/subcommand +++ b/subcommand @@ -1,5 +1,6 @@ #!/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_setup)" != "function" ]]; then gsu_dir=${gsu_dir:-${BASH_SOURCE[0]%/*}} @@ -24,7 +25,7 @@ _gsu_usage() # exactly one parenthesized subexpression for matching the command name. _gsu_get_command_regex() { - local cmd="${1:-[-a-zA-Z_0-9]+}" + local cmd="${1:-[-a-zA-Z_0-9]{1,\}}" result="^com_($cmd)\(\)" } @@ -57,7 +58,7 @@ _gsu_print_available_commands() printf 'Available commands:\n' for cmd in $gsu_cmds; do printf '%s' "$cmd" - let count++ + let ++count if (($count % 4)); then printf '\t' ((${#cmd} < 8)) && printf '\t' @@ -68,6 +69,8 @@ _gsu_print_available_commands() 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 @@ -93,9 +96,10 @@ Print the current preferences. Usage: prefs [-e] -If -e is given, the config file is opened with the default editor. Without -options, the command prints out a list of all cmt config variables, together -with their current value and the default value." +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() { local i conf="${gsu_config_file:=${HOME:-}/.$gsu_name.rc}" @@ -158,15 +162,15 @@ _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" @@ -178,16 +182,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=" @@ -314,7 +318,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: @@ -546,6 +550,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 @@ -573,8 +578,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