]> git.tuebingen.mpg.de Git - gsu.git/blobdiff - subcommand
subcommand: Use POSIX compatible command regex.
[gsu.git] / subcommand
index 95e0ba9ebbc48aa5f8753d2e8fc42d8e594a26b7..ca546bd1617074d86813135f54c9dc2f7f7e5873 100644 (file)
@@ -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)\(\)"
 }
 
@@ -50,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
@@ -315,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:
@@ -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