diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | Completion/Unix/Command/_initctl | 67 |
2 files changed, 39 insertions, 33 deletions
diff --git a/ChangeLog b/ChangeLog index b98c3abf2..b47f503dc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,9 @@ * 29365: Completion/Unix/Command/_make: redefine _make so that helper functions are only defined once. + * 29376: Completion/Unix/Command/_initctl: redefine _initctl so + that helper functions are only defined once. + 2011-05-26 Peter Stephenson <pws@csr.com> * unposted: Etc/CONTRIBUTORS: expand. @@ -14834,5 +14837,5 @@ ***************************************************** * This is used by the shell to define $ZSH_PATCHLEVEL -* $Revision: 1.5333 $ +* $Revision: 1.5334 $ ***************************************************** diff --git a/Completion/Unix/Command/_initctl b/Completion/Unix/Command/_initctl index 08145b19e..11bd59b50 100644 --- a/Completion/Unix/Command/_initctl +++ b/Completion/Unix/Command/_initctl @@ -2,28 +2,7 @@ # Written by Bernhard Tittelbach # based on completion script by Mildred -local -a common_args -common_args=( - '--session[use D-Bus session bus to connect to init daemon (for testing)]' - '--system[talk via DBUS system bus instead of socket]' - '(-q --quiet)'{-q,--quiet}'[reduce output to errors only]' - '(-v --verbose)'{-v,--verbose}'[increase output to include informational messages]' - '--dest=[D-Bus name for init, defaults to com.ubuntu.Upstart]' - '--help[display help and exit]' - '--version[output version information and exit]' -) - -# don't overwrite work that we might have already done -if (( ${+_initctl_events_list} + ${+_initctl_eventargs_list} != 2 )); then - typeset -g -a -U _initctl_events_list _initctl_eventargs_list -fi - -# map each initctl function to a completion function -local -A cmd_completion_funcs -cmd_completion_funcs=( start startstop stop startstop restart startstop reload startstop show-config show-config status argjob emit emit check-config check-config ) - -# define fallback completion function -local cmd_completion_default=basic +typeset -g -a -U _initctl_events_list _initctl_eventargs_list # run show-config -e and if possible parse out all events and KEY= argumnts # otherwise provide some common values @@ -169,13 +148,37 @@ _initctl_check-config() '*::' } -# depending on which command was used, call different completion funtions -case $service in - initctl) - _arguments "${common_args[@]}" '*::Initctl Commands:_initctl_command' - ;; - start|stop|restart|reload|status) - _call_function ret _initctl_${cmd_completion_funcs[${service}]-${cmd_completion_default}} - ;; - *) return 1 ;; -esac +# after defining above functions, overwrite _initctl function so helper-functions are loaded only once +_initctl() +{ + local -a common_args + common_args=( + '--session[use D-Bus session bus to connect to init daemon (for testing)]' + '--system[talk via DBUS system bus instead of socket]' + '(-q --quiet)'{-q,--quiet}'[reduce output to errors only]' + '(-v --verbose)'{-v,--verbose}'[increase output to include informational messages]' + '--dest=[D-Bus name for init, defaults to com.ubuntu.Upstart]' + '--help[display help and exit]' + '--version[output version information and exit]' + ) + + # map each initctl function to a completion function + local -A cmd_completion_funcs + cmd_completion_funcs=( start startstop stop startstop restart startstop reload startstop show-config show-config status argjob emit emit check-config check-config ) + + # define fallback completion function + local cmd_completion_default=basic + + # depending on which command was used, call different completion funtions + case $service in + initctl) + _arguments "${common_args[@]}" '*::Initctl Commands:_initctl_command' + ;; + start|stop|restart|reload|status) + _call_function ret _initctl_${cmd_completion_funcs[${service}]-${cmd_completion_default}} + ;; + *) return 1 ;; + esac +} + +_initctl "$@" |