diff options
Diffstat (limited to 'plugins/supervisor/_supervisorctl')
| -rw-r--r-- | plugins/supervisor/_supervisorctl | 136 | 
1 files changed, 136 insertions, 0 deletions
| diff --git a/plugins/supervisor/_supervisorctl b/plugins/supervisor/_supervisorctl new file mode 100644 index 000000000..d159f20e0 --- /dev/null +++ b/plugins/supervisor/_supervisorctl @@ -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 "$@" | 
