#compdef snazy

autoload -U is-at-least

_snazy() {
    typeset -A opt_args
    typeset -a _arguments_options
    local ret=1

    if is-at-least 5.2; then
        _arguments_options=(-s -S -C)
    else
        _arguments_options=(-s -C)
    fi

    local context curcontext="$curcontext" state line
    _arguments "${_arguments_options[@]}" \
'*-r+[highlight word in a message with a regexp]: : ' \
'*--regexp=[highlight word in a message with a regexp]: : ' \
'*-f+[filter by levels]: :(info debug warning error info)' \
'*--filter-levels=[filter by levels]: :(info debug warning error info)' \
'--time-format=[Time format]: : ' \
'--kail-prefix-format=[Kail prefix format]: : ' \
'*-k+[key to use for json parsing]: : ' \
'*--json-keys=[key to use for json parsing]: : ' \
'*--action-regexp=[A regexp to match for action]: : ' \
'*--action-command=[An action command to launch when action-regexp match]: : ' \
'-c+[When to use colors: never, *auto*, always]:when:(never auto always)' \
'--color=[When to use colors: never, *auto*, always]:when:(never auto always)' \
'-h[Print help information]' \
'--help[Print help information]' \
'-V[Print version information]' \
'--version[Print version information]' \
'--kail-no-prefix[Hide container prefix when showing the log with kail]' \
'--level-symbols[Replace log level with pretty symbols]' \
'*::files -- files to read, if not specified, stdin is used:' \
&& ret=0
}

(( $+functions[_snazy_commands] )) ||
_snazy_commands() {
    local commands; commands=()
    _describe -t commands 'snazy commands' commands "$@"
}

_snazy "$@"
