From c54761ffae2f3fd24db97a447a6db5d90959a1d6 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Tue, 2 Aug 2011 15:09:21 +0200 Subject: [PATCH] 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. --- funcs/gsu | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) 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" -- 2.39.2