#compdef iotracectl

autoload -U is-at-least

_iotracectl() {
    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[@]}" \
'-c+[The precached config file to use]' \
'--config=[The precached config file to use]' \
'-a[Produce ASCII output (default) instead of using Unicode for line drawing]' \
'--ascii[Produce ASCII output (default) instead of using Unicode for line drawing]' \
'-u[Produce Unicode output instead of using ASCII (default) for line drawing]' \
'--unicode[Produce Unicode output instead of using ASCII (default) for line drawing]' \
'*-v[Sets the level of output verbosity]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_iotracectl_commands" \
"*::: :->iotracectl" \
&& ret=0
    case $state in
    (iotracectl)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:iotracectl-command-$line[1]:"
        case $line[1] in
            (status)
_arguments "${_arguments_options[@]}" \
'--tabular[Use '\''tabular'\'' display format]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(list)
_arguments "${_arguments_options[@]}" \
'-p+[Filter for the hash value of the I/O trace]' \
'--hash=[Filter for the hash value of the I/O trace]' \
'-e+[Filter for executable name of the I/O trace]' \
'--executable=[Filter for executable name of the I/O trace]' \
'-o+[Filter for optimization status of the I/O trace]: :(true false)' \
'--optimized=[Filter for optimization status of the I/O trace]: :(true false)' \
'-b+[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--blacklisted=[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--flags=[Filter for flags of the I/O trace]: :(valid invalid fresh expired current outdated missing)' \
'--sort=[Sort entries by field]: :(executable hash date numfiles numioops iosize optimized blacklisted)' \
'--order=[Sort order]: :(asc ascending desc descending)' \
'(-f --full -s --short -t --terse)--tabular[Use '\''tabular'\'' display format]' \
'(--tabular -s --short -t --terse)-f[Use '\''full'\'' display format (list all fields)]' \
'(--tabular -s --short -t --terse)--full[Use '\''full'\'' display format (list all fields)]' \
'(--tabular -f --full -t --terse)-s[Use '\''short'\'' display format (list important fields only)]' \
'(--tabular -f --full -t --terse)--short[Use '\''short'\'' display format (list important fields only)]' \
'(--tabular -f --full -s --short)-t[Use '\''terse'\'' display format (list executables only)]' \
'(--tabular -f --full -s --short)--terse[Use '\''terse'\'' display format (list executables only)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(show)
_arguments "${_arguments_options[@]}" \
'-p+[Filter for the hash value of the I/O trace]' \
'--hash=[Filter for the hash value of the I/O trace]' \
'-e+[Filter for executable name of the I/O trace]' \
'--executable=[Filter for executable name of the I/O trace]' \
'-o+[Filter for optimization status of the I/O trace]: :(true false)' \
'--optimized=[Filter for optimization status of the I/O trace]: :(true false)' \
'-b+[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--blacklisted=[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--flags=[Filter for flags of the I/O trace]: :(valid invalid fresh expired current outdated missing)' \
'--sort=[Sort entries by field]: :(executable hash date numfiles numioops iosize optimized blacklisted)' \
'--order=[Sort order]: :(asc ascending desc descending)' \
'(-s --short)-f[Use '\''full'\'' display format (list all fields)]' \
'(-s --short)--full[Use '\''full'\'' display format (list all fields)]' \
'(-f --full)-s[Use '\''short'\'' display format (list important fields only)]' \
'(-f --full)--short[Use '\''short'\'' display format (list important fields only)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(info)
_arguments "${_arguments_options[@]}" \
'-p+[Filter for the hash value of the I/O trace]' \
'--hash=[Filter for the hash value of the I/O trace]' \
'-e+[Filter for executable name of the I/O trace]' \
'--executable=[Filter for executable name of the I/O trace]' \
'-o+[Filter for optimization status of the I/O trace]: :(true false)' \
'--optimized=[Filter for optimization status of the I/O trace]: :(true false)' \
'-b+[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--blacklisted=[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--flags=[Filter for flags of the I/O trace]: :(valid invalid fresh expired current outdated missing)' \
'--sort=[Sort entries by field]: :(executable hash date numfiles numioops iosize optimized blacklisted)' \
'--order=[Sort order]: :(asc ascending desc descending)' \
'(-s --short)-f[Use '\''full'\'' display format (list all fields)]' \
'(-s --short)--full[Use '\''full'\'' display format (list all fields)]' \
'(-f --full)-s[Use '\''short'\'' display format (list important fields only)]' \
'(-f --full)--short[Use '\''short'\'' display format (list important fields only)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(dump)
_arguments "${_arguments_options[@]}" \
'-p+[The hash value of the I/O trace]' \
'--hash=[The hash value of the I/O trace]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(analyze)
_arguments "${_arguments_options[@]}" \
'-p+[The hash value of the I/O trace]' \
'--hash=[The hash value of the I/O trace]' \
'(-t --terse)--tabular[Use '\''tabular'\'' display format]' \
'-t[Use '\''terse'\'' display format (list executables only)]' \
'--terse[Use '\''terse'\'' display format (list executables only)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(sizes)
_arguments "${_arguments_options[@]}" \
'-p+[Filter for the hash value of the I/O trace]' \
'--hash=[Filter for the hash value of the I/O trace]' \
'-e+[Filter for executable name of the I/O trace]' \
'--executable=[Filter for executable name of the I/O trace]' \
'-o+[Filter for optimization status of the I/O trace]: :(true false)' \
'--optimized=[Filter for optimization status of the I/O trace]: :(true false)' \
'-b+[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--blacklisted=[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--flags=[Filter for flags of the I/O trace]: :(valid invalid fresh expired current outdated missing)' \
'(-s --short)-f[Use '\''full'\'' display format (list all fields)]' \
'(-s --short)--full[Use '\''full'\'' display format (list all fields)]' \
'(-f --full)-s[Use '\''short'\'' display format (list important fields only)]' \
'(-f --full)--short[Use '\''short'\'' display format (list important fields only)]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(optimize)
_arguments "${_arguments_options[@]}" \
'-p+[Filter for the hash value of the I/O trace]' \
'--hash=[Filter for the hash value of the I/O trace]' \
'-e+[Filter for executable name of the I/O trace]' \
'--executable=[Filter for executable name of the I/O trace]' \
'-o+[Filter for optimization status of the I/O trace]: :(true false)' \
'--optimized=[Filter for optimization status of the I/O trace]: :(true false)' \
'-b+[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--blacklisted=[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--flags=[Filter for flags of the I/O trace]: :(valid invalid fresh expired current outdated missing)' \
'--sort=[Sort entries by field]: :(executable hash date numfiles numioops iosize optimized blacklisted)' \
'--order=[Sort order]: :(asc ascending desc descending)' \
'-n[Do not actually optimize anything, just pretend to]' \
'--dry-run[Do not actually optimize anything, just pretend to]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(blacklist)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
":: :_iotracectl__blacklist_commands" \
"*::: :->blacklist" \
&& ret=0
case $state in
    (blacklist)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:iotracectl-blacklist-command-$line[1]:"
        case $line[1] in
            (add)
_arguments "${_arguments_options[@]}" \
'-p+[Filter for the hash value of the I/O trace]' \
'--hash=[Filter for the hash value of the I/O trace]' \
'-e+[Filter for executable name of the I/O trace]' \
'--executable=[Filter for executable name of the I/O trace]' \
'-o+[Filter for optimization status of the I/O trace]: :(true false)' \
'--optimized=[Filter for optimization status of the I/O trace]: :(true false)' \
'-b+[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--blacklisted=[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--flags=[Filter for flags of the I/O trace]: :(valid invalid fresh expired current outdated missing)' \
'--sort=[Sort entries by field]: :(executable hash date numfiles numioops iosize optimized blacklisted)' \
'--order=[Sort order]: :(asc ascending desc descending)' \
'-n[Do not actually optimize anything, just pretend to]' \
'--dry-run[Do not actually optimize anything, just pretend to]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(remove)
_arguments "${_arguments_options[@]}" \
'-p+[Filter for the hash value of the I/O trace]' \
'--hash=[Filter for the hash value of the I/O trace]' \
'-e+[Filter for executable name of the I/O trace]' \
'--executable=[Filter for executable name of the I/O trace]' \
'-o+[Filter for optimization status of the I/O trace]: :(true false)' \
'--optimized=[Filter for optimization status of the I/O trace]: :(true false)' \
'-b+[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--blacklisted=[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--flags=[Filter for flags of the I/O trace]: :(valid invalid fresh expired current outdated missing)' \
'--sort=[Sort entries by field]: :(executable hash date numfiles numioops iosize optimized blacklisted)' \
'--order=[Sort order]: :(asc ascending desc descending)' \
'-n[Do not actually optimize anything, just pretend to]' \
'--dry-run[Do not actually optimize anything, just pretend to]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
        esac
    ;;
esac
;;
(delete)
_arguments "${_arguments_options[@]}" \
'-p+[Filter for the hash value of the I/O trace]' \
'--hash=[Filter for the hash value of the I/O trace]' \
'-e+[Filter for executable name of the I/O trace]' \
'--executable=[Filter for executable name of the I/O trace]' \
'-o+[Filter for optimization status of the I/O trace]: :(true false)' \
'--optimized=[Filter for optimization status of the I/O trace]: :(true false)' \
'-b+[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--blacklisted=[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--flags=[Filter for flags of the I/O trace]: :(valid invalid fresh expired current outdated missing)' \
'--sort=[Sort entries by field]: :(executable hash date numfiles numioops iosize optimized blacklisted)' \
'--order=[Sort order]: :(asc ascending desc descending)' \
'-n[Do not actually optimize anything, just pretend to]' \
'--dry-run[Do not actually optimize anything, just pretend to]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(remove)
_arguments "${_arguments_options[@]}" \
'-p+[Filter for the hash value of the I/O trace]' \
'--hash=[Filter for the hash value of the I/O trace]' \
'-e+[Filter for executable name of the I/O trace]' \
'--executable=[Filter for executable name of the I/O trace]' \
'-o+[Filter for optimization status of the I/O trace]: :(true false)' \
'--optimized=[Filter for optimization status of the I/O trace]: :(true false)' \
'-b+[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--blacklisted=[Filter for blacklisted status of the I/O trace]: :(true false)' \
'--flags=[Filter for flags of the I/O trace]: :(valid invalid fresh expired current outdated missing)' \
'--sort=[Sort entries by field]: :(executable hash date numfiles numioops iosize optimized blacklisted)' \
'--order=[Sort order]: :(asc ascending desc descending)' \
'-n[Do not actually optimize anything, just pretend to]' \
'--dry-run[Do not actually optimize anything, just pretend to]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(clear)
_arguments "${_arguments_options[@]}" \
'-n[Do not actually optimize anything, just pretend to]' \
'--dry-run[Do not actually optimize anything, just pretend to]' \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
&& ret=0
;;
(completions)
_arguments "${_arguments_options[@]}" \
'-h[Prints help information]' \
'--help[Prints help information]' \
'-V[Prints version information]' \
'--version[Prints version information]' \
':SHELL -- The shell to generate the script for:(bash fish zsh powershell)' \
&& ret=0
;;
        esac
    ;;
esac
}

(( $+functions[_iotracectl_commands] )) ||
_iotracectl_commands() {
    local commands; commands=(
        "status:Show status" \
"list:List all available I/O traces" \
"info:Print metadata information of specific I/O traces" \
"dump:Dump I/O trace log entries (recorded I/O operations)" \
"analyze:Analyze I/O trace logs (check for missing files)" \
"sizes:Show virtual memory consumption" \
"optimize:Optimize I/O trace logs (optimize I/O operations)" \
"blacklist:Manage the dynamic blacklist entries" \
"remove:Remove I/O trace logs" \
"clear:Completely clear all I/O traces and reset the precached I/O tracing subsystem" \
"help:Display this short help text" \
"completions:Generates completion scripts for your shell" \
    )
    _describe -t commands 'iotracectl commands' commands "$@"
}
(( $+functions[_iotracectl__blacklist__add_commands] )) ||
_iotracectl__blacklist__add_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl blacklist add commands' commands "$@"
}
(( $+functions[_iotracectl__analyze_commands] )) ||
_iotracectl__analyze_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl analyze commands' commands "$@"
}
(( $+functions[_iotracectl__blacklist_commands] )) ||
_iotracectl__blacklist_commands() {
    local commands; commands=(
        "add:Add an I/O trace log to the dynamic blacklist" \
"remove:Remove an I/O trace log from the dynamic blacklist" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'iotracectl blacklist commands' commands "$@"
}
(( $+functions[_iotracectl__clear_commands] )) ||
_iotracectl__clear_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl clear commands' commands "$@"
}
(( $+functions[_iotracectl__completions_commands] )) ||
_iotracectl__completions_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl completions commands' commands "$@"
}
(( $+functions[_delete_commands] )) ||
_delete_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'delete commands' commands "$@"
}
(( $+functions[_iotracectl__delete_commands] )) ||
_iotracectl__delete_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl delete commands' commands "$@"
}
(( $+functions[_iotracectl__dump_commands] )) ||
_iotracectl__dump_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl dump commands' commands "$@"
}
(( $+functions[_iotracectl__blacklist__help_commands] )) ||
_iotracectl__blacklist__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl blacklist help commands' commands "$@"
}
(( $+functions[_iotracectl__help_commands] )) ||
_iotracectl__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl help commands' commands "$@"
}
(( $+functions[_iotracectl__info_commands] )) ||
_iotracectl__info_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl info commands' commands "$@"
}
(( $+functions[_iotracectl__list_commands] )) ||
_iotracectl__list_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl list commands' commands "$@"
}
(( $+functions[_iotracectl__optimize_commands] )) ||
_iotracectl__optimize_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl optimize commands' commands "$@"
}
(( $+functions[_iotracectl__blacklist__remove_commands] )) ||
_iotracectl__blacklist__remove_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl blacklist remove commands' commands "$@"
}
(( $+functions[_iotracectl__remove_commands] )) ||
_iotracectl__remove_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl remove commands' commands "$@"
}
(( $+functions[_iotracectl__show_commands] )) ||
_iotracectl__show_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl show commands' commands "$@"
}
(( $+functions[_show_commands] )) ||
_show_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'show commands' commands "$@"
}
(( $+functions[_iotracectl__sizes_commands] )) ||
_iotracectl__sizes_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl sizes commands' commands "$@"
}
(( $+functions[_iotracectl__status_commands] )) ||
_iotracectl__status_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'iotracectl status commands' commands "$@"
}

_iotracectl "$@"