123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #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 "$@"
|