From: Andre Noll Date: Tue, 2 Aug 2011 13:09:21 +0000 (+0200) Subject: gsu: Avoid duplication of command regex. X-Git-Url: http://git.tuebingen.mpg.de/?p=gsu.git;a=commitdiff_plain;h=c54761ffae2f3fd24db97a447a6db5d90959a1d6 gsu: Avoid duplication of command regex. The regular expression for fining the subcommands was duplicated four times in gsu. Needless to say that this resulted in more than one variant of the expression... Avoid this duplication by introducing the global gsu_command_regex variable. While at it, use a more clever sed command in _gsu_available_commands() which allows to kill a grep command. --- diff --git a/funcs/gsu b/funcs/gsu index c11d19f..63e0acf 100644 --- a/funcs/gsu +++ b/funcs/gsu @@ -137,13 +137,16 @@ _gsu_usage() } export -f _gsu_usage +# Each line matching this is recognized as a subcommand. The name +# of the subcommand is the first subexpression. +export gsu_command_regex='^com_\([a-zA-Z_0-9]\+\)()' + _gsu_available_commands() { - result="$( (printf "help\nman\nprefs\n"; grep "^com_[a-z_]\+()" $0) \ - | sed -e 's/^com_//' -e 's/()//' \ - | sort \ - | tr '\n' ' ')" - ret=$GSU_SUCCESS + result="$({ + printf "help\nman\nprefs\n" + sed -ne "s/$gsu_command_regex/\1/g;T;p" $0 + } | sort | tr '\n' ' ')" } export -f _gsu_available_commands @@ -281,13 +284,13 @@ _com_help() printf "com_help()\n$gsu_help_txt" | head -n 4; echo "--" printf "com_man()\n$gsu_man_txt" | head -n 4; echo "--" printf "com_prefs()\n$gsu_prefs_txt" | head -n 4; echo "--" - grep -A 2 "^com_\([a-zA-Z_0-9]\+\)()" $0 + grep -A 2 "$gsu_command_regex" $0 } | grep -v -- '--' \ - | sed -e '/^com_\([a-zA-Z_0-9]\+\)()/bs' \ + | sed -e "/$gsu_command_regex/bs" \ -e 'H;$!d;x;s/\n//g;b' \ -e :s \ -e 'x;s/\n//g;${p;x;}' \ - | sed -e 's/^com_\([a-zA-Z_0-9]\+\)()#*/\1\t/' \ + | sed -e "s/${gsu_command_regex}#*/\1\t/" \ | sort \ | while read a b; do printf "$a\t"