Created
July 27, 2012 11:36
-
-
Save pfreixes/3187511 to your computer and use it in GitHub Desktop.
Supervisorctl bash autocomplete
This file contains hidden or 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
# pfreixes, 2012-07-27 | |
# Add to /etc/bash_completion.d/supervisorctl | |
_supervisor() | |
{ | |
local cur prev opts base | |
COMPREPLY=() | |
cur="${COMP_WORDS[COMP_CWORD]}" | |
prev="${COMP_WORDS[COMP_CWORD-1]}" | |
# | |
# The basic options we'll complete. | |
# | |
opts="add clear fg open quit remove restart start stop update avail exit maintail pid reload reread shutdown status tail version" | |
# | |
# Complete the arguments to some of the basic commands. | |
# | |
case "${prev}" in | |
start|stop|restart) | |
local process=$(for x in `supervisorctl avail | awk '{print $1}'`; do echo ${x} ; done ) | |
COMPREPLY=( $(compgen -W "${process}" -- ${cur}) ) | |
return 0 | |
;; | |
*) | |
;; | |
esac | |
COMPREPLY=($(compgen -W "${opts}" -- ${cur})) | |
return 0 | |
} | |
complete -F _supervisor supervisorctl |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This will not work if You are using groups of processes. In this case, supervisor's processes looks like <group_name:process_name>, e.g.
database:etcd
, but bash-completion treats colon ':' as a separator and autocomplete fails.Solution using
_init_completion -n :
and__ltrim_colon_completions "$cur"
:Also, i've devided commands because
supervisorctl update
expects a group name, not a process. Also added additional 'all' keyword into the list to get status, stop, start or something else of all items.Tested on Linux. In MacOS
_init_completion
may not work (maybe_get_comp_words_by_ref -n : cur
must be used as alternative)