forked from ohmyzsh/ohmyzsh
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request ohmyzsh#1297 from everbird/master
supervisor plugin
- Loading branch information
Showing
3 changed files
with
169 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 "$@" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
#compdef supervisord | ||
|
||
typeset -A opt_args | ||
local context state line | ||
|
||
_arguments \ | ||
{--configuration,-c}"[configuration file]:FILENAME:_files" \ | ||
{--nodaemon,-n}"[run in the foreground (same as 'nodaemon true' in config file)]" \ | ||
{--help,-h}"[print this usage message and exit]:" \ | ||
{--user,-u}"[run supervisord as this user]:USER:_users" \ | ||
{--umask,-m}"[use this umask for daemon subprocess (default is 022)]" \ | ||
{--directory,-d}"[directory to chdir to when daemonized]" \ | ||
{--logfile,-l}"[use FILENAME as logfile path]:FILENAME:_files" \ | ||
{--logfile_maxbytes,-y}"[use BYTES to limit the max size of logfile]" \ | ||
{--logfile_backups,-z}"[number of backups to keep when max bytes reached]" \ | ||
{--loglevel,-e}"[use LEVEL as log level (debug,info,warn,error,critical)]:level:->levels" \ | ||
{--pidfile,-j}"[write a pid file for the daemon process to FILENAME]:FILENAME:_files" \ | ||
{--identifier,-i}"[identifier used for this instance of supervisord]" \ | ||
{--childlogdir,-q}"[the log directory for child process logs]:child log directory:_files -/" \ | ||
{--nocleanup,-k}"[prevent the process from performing cleanup (removal of old automatic child log files) at startup.]" \ | ||
{--minfds,-a}"[the minimum number of file descriptors for start success]" \ | ||
{--strip_ansi,-t}"[strip ansi escape codes from process output]" \ | ||
"--minprocs[the minimum number of processes available for start success]" \ | ||
"--profile_options[run supervisord under profiler and output results based on OPTIONS, which is a comma-sep'd list of 'cumulative', 'calls', and/or 'callers', e.g. 'cumulative,callers')]" \ | ||
"*::args:_gnu_generic" | ||
|
||
case $state in | ||
levels) | ||
levels=("debug" "info" "warn" "error" "critical") | ||
_describe -t levels 'supervisord levels' levels && return 0 | ||
;; | ||
esac |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# DECLARION: This plugin was created by hhatto. What I did is just making a portal from https://bitbucket.org/hhatto/zshcompfunc4supervisor. |