#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]:" \
    {--version,-v}"[print supervisord version number 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