|
@@ -0,0 +1,136 @@
|
|
|
|
+#compdef supervisorctl
|
|
|
|
+
|
|
|
|
+typeset -A opt_args
|
|
|
|
+local context state line
|
|
|
|
+
|
|
|
|
+_supervisorctl() {
|
|
|
|
+ _arguments -s -S \
|
|
|
|
+ {--configuration,-c}"[configuration file path (default /etc/supervisor.conf)]:FILENAME:_files" \
|
|
|
|
+ {--help,-h}"[print usage message and exit]:" \
|
|
|
|
+ {--interactive,-i}"[start an interactive shell after executing commands]" \
|
|
|
|
+ {--serverurl,-s}"[URL on which supervisord server is listening (default "http://localhost:9001").]" \
|
|
|
|
+ {--username,-u}"[username to use for authentication with server]:USERNAME:_users" \
|
|
|
|
+ {--password,-p}"[password to use for authentication with server]:PASSWORD:" \
|
|
|
|
+ {--history-file,-r}"[keep a readline history (if readline is available)]:FILENAME:_files" \
|
|
|
|
+ "*::supervisorctl commands:_supervisorctl_command"
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+(( $+functions[_supervisorctl_command] )) ||
|
|
|
|
+_supervisorctl_command() {
|
|
|
|
+ local cmd ret=1
|
|
|
|
+
|
|
|
|
+ (( $+supervisorctl_cmds )) || _supervisorctl_cmds=(
|
|
|
|
+ "add:Activates any updates in config for process/group" \
|
|
|
|
+ "avail:Display all configured processes" \
|
|
|
|
+ "clear:Clear process/multiple-process/all-process log files" \
|
|
|
|
+ "exit:Exit the supervisor shell." \
|
|
|
|
+ "fg:Connect to a process in foreground mode" \
|
|
|
|
+ "maintail:tail of supervisor main log file" \
|
|
|
|
+ "open:Connect to a remote supervisord process. (for UNIX domain socket, use unix:///socket/path)" \
|
|
|
|
+ "pid:Get the PID of supervisord." \
|
|
|
|
+ "quit:Exit the supervisor shell." \
|
|
|
|
+ "reload:Restart the remote supervisord." \
|
|
|
|
+ "remove:Removes process/group from active config" \
|
|
|
|
+ "reread:Reload the daemon's configuration files" \
|
|
|
|
+ "restart:Restart process or group." \
|
|
|
|
+ "shutdown:Shut the remote supervisord down." \
|
|
|
|
+ "start:Start process or groups." \
|
|
|
|
+ "status:Get process status info." \
|
|
|
|
+ "stop:Stop process or group." \
|
|
|
|
+ "tail:tail of process stdout" \
|
|
|
|
+ "update:Reload config and add/remove as necessary" \
|
|
|
|
+ "version:Show the version of the remote supervisord process" \
|
|
|
|
+ "help:Show help" \
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ if (( CURRENT == 1 )); then
|
|
|
|
+ _describe -t commands 'supervisorctl subcommand' _supervisorctl_cmds \
|
|
|
|
+ || compadd "$@" - ${(s.:.)${(j.:.)_supervisorctl_syns}}
|
|
|
|
+ else
|
|
|
|
+ local curcontext="$curcontext"
|
|
|
|
+
|
|
|
|
+ cmd="${${_supervisorctl_cmds[(r)$words[1]:*]%%:*}:-${(k)_supervisorctl_syns[(r)(*:|)$words[1](:*|)]}}"
|
|
|
|
+ if (( $#cmd )); then
|
|
|
|
+ curcontext="${curcontext%:*:*}:supervisorctl-${cmd}:"
|
|
|
|
+ _call_function ret _supervisorctl_$cmd || _message 'no more arguments'
|
|
|
|
+ else
|
|
|
|
+ _message "unknown supervisorctl command: $words[1]"
|
|
|
|
+ fi
|
|
|
|
+ return ret
|
|
|
|
+ fi
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+# get supervisor contoroll processes
|
|
|
|
+(( $+functions[_get_supervisor_procs] )) ||
|
|
|
|
+_get_supervisor_procs() {
|
|
|
|
+ local cache_policy
|
|
|
|
+ zstyle -s ":completion:${curcontext}:" cache-policy cache_policy
|
|
|
|
+ if [[ -z "$cache_policy" ]]; then
|
|
|
|
+ zstyle ":completion:${curcontext}:" cache-policy _supervisor_procs_caching_policy
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ if ( [[ ${+_supervisor_procs} -eq 0 ]] || _cache_invalid supervisor_procs ) \
|
|
|
|
+ && ! _retrieve_cache supervisor_procs; then
|
|
|
|
+
|
|
|
|
+ _supervisor_procs=(${${(f)"$(supervisorctl status >/dev/null 2>&1 | awk -F' ' '{print $1}')"}})
|
|
|
|
+ _store_cache supervisor_procs _supervisor_procs
|
|
|
|
+ fi
|
|
|
|
+
|
|
|
|
+ local expl
|
|
|
|
+ _wanted supervisor_procs expl 'supervisor processes' compadd -a _supervisor_procs
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+_supervisor_procs_caching_policy() {
|
|
|
|
+ local -a oldp
|
|
|
|
+ oldp=( "$1"(Nmw+1) )
|
|
|
|
+ (( $#oldp ))
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+(( $+functions[_supervisorctl_add] )) ||
|
|
|
|
+_supervisorctl_add() {
|
|
|
|
+ _arguments -s \
|
|
|
|
+ "--help[use help system]" \
|
|
|
|
+ "*::supervisorctl commands:_supervisorctl"
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+(( $+functions[_supervisorctl_help] )) ||
|
|
|
|
+_supervisorctl_help() {
|
|
|
|
+ _arguments -s \
|
|
|
|
+ "*:supervisorctl commands:_supervisorctl"
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+(( $+functions[_supervisorctl_maintail] )) ||
|
|
|
|
+_supervisorctl_maintail() {
|
|
|
|
+ _arguments -s \
|
|
|
|
+ '-f[Continuous tail of supervisor main log file (Ctrl-C to exit)]'
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+(( $+functions[_supervisorctl_start] )) ||
|
|
|
|
+_supervisorctl_start() {
|
|
|
|
+ # TODO: add 'all'
|
|
|
|
+ _arguments -s \
|
|
|
|
+ '*::supvervisor process:_get_supervisor_procs'
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+(( $+functions[_supervisorctl_status] )) ||
|
|
|
|
+_supervisorctl_status() {
|
|
|
|
+ _arguments \
|
|
|
|
+ '*::supvervisor process:_get_supervisor_procs'
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+(( $+functions[_supervisorctl_stop] )) ||
|
|
|
|
+_supervisorctl_stop() {
|
|
|
|
+ # TODO: add 'all'
|
|
|
|
+ _arguments -s \
|
|
|
|
+ '*::supvervisor process:_get_supervisor_procs'
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+(( $+functions[_supervisorctl_tail] )) ||
|
|
|
|
+_supervisorctl_tail() {
|
|
|
|
+ # TODO: add 'stderr'
|
|
|
|
+ _arguments -s \
|
|
|
|
+ '-f[Continuous tail of named process stdout Ctrl-C to exit.]' \
|
|
|
|
+ '*::supvervisor process:_get_supervisor_procs'
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+_supervisorctl "$@"
|