#compdef pouf

autoload -U is-at-least

_pouf() {
    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[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
'-V[Print version information]' \
'--version[Print version information]' \
":: :_pouf_commands" \
"*::: :->pouf" \
&& ret=0
    case $state in
    (pouf)
        words=($line[1] "${words[@]}")
        (( CURRENT += 1 ))
        curcontext="${curcontext%:*:*}:pouf-command-$line[1]:"
        case $line[1] in
            (lorem.word)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(barecode.isbn)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(internet.mail)
_arguments "${_arguments_options[@]}" \
'-l+[give lang (ie: fr_FR)]: : ' \
'-n+[number of values]: : ' \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(internet.ip)
_arguments "${_arguments_options[@]}" \
'-4[give exclusivly IPv4]' \
'--ipv4[give exclusivly IPv4]' \
'-6[give exclusivly IPv6]' \
'--ipv6[give exclusivly IPv6]' \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(internet.mac)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(internet.useragent)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(internet.color)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(http.code)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(time.time)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(time.date)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(filesystem.mimetype)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(filesystem.semver)
_arguments "${_arguments_options[@]}" \
'-s[give exclusivly stable semver version (X.Y.Z)]' \
'--stable[give exclusivly stable semver version (X.Y.Z)]' \
'-u[give exclusivly unstable semver version (X-Y-Z-V.W)]' \
'--unstable[give exclusivly unstable semver version (X-Y-Z-V.W)]' \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(administrative.healthinsurrancecode)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(finance.bic)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(auto.licenseplate)
_arguments "${_arguments_options[@]}" \
'-h[Print help information]' \
'--help[Print help information]' \
&& ret=0
;;
(help)
_arguments "${_arguments_options[@]}" \
'*::subcommand -- The subcommand whose help message to display:' \
&& ret=0
;;
        esac
    ;;
esac
}

(( $+functions[_pouf_commands] )) ||
_pouf_commands() {
    local commands; commands=(
'lorem.word:give a fake word' \
'barecode.isbn:give an isbn code' \
'internet.mail:give a fake mail' \
'internet.ip:give a fake IP (Internet Protocol)' \
'internet.mac:give a fake mac adress' \
'internet.useragent:give a fake user agent' \
'internet.color:give a fake hexadecimal color' \
'http.code:give a fake HTTP code' \
'time.time:give a fake time' \
'time.date:give a fake date' \
'filesystem.mimetype:give a fake mime-type' \
'filesystem.semver:give a fake semver version' \
'administrative.healthinsurrancecode:give a Health insurrance code' \
'finance.bic:give a fake BIC (Business Identifier Code)' \
'auto.licenseplate:give a french automotive license plate' \
'help:Print this message or the help of the given subcommand(s)' \
    )
    _describe -t commands 'pouf commands' commands "$@"
}
(( $+functions[_pouf__administrative.healthinsurrancecode_commands] )) ||
_pouf__administrative.healthinsurrancecode_commands() {
    local commands; commands=()
    _describe -t commands 'pouf administrative.healthinsurrancecode commands' commands "$@"
}
(( $+functions[_pouf__auto.licenseplate_commands] )) ||
_pouf__auto.licenseplate_commands() {
    local commands; commands=()
    _describe -t commands 'pouf auto.licenseplate commands' commands "$@"
}
(( $+functions[_pouf__barecode.isbn_commands] )) ||
_pouf__barecode.isbn_commands() {
    local commands; commands=()
    _describe -t commands 'pouf barecode.isbn commands' commands "$@"
}
(( $+functions[_pouf__filesystem.mimetype_commands] )) ||
_pouf__filesystem.mimetype_commands() {
    local commands; commands=()
    _describe -t commands 'pouf filesystem.mimetype commands' commands "$@"
}
(( $+functions[_pouf__filesystem.semver_commands] )) ||
_pouf__filesystem.semver_commands() {
    local commands; commands=()
    _describe -t commands 'pouf filesystem.semver commands' commands "$@"
}
(( $+functions[_pouf__finance.bic_commands] )) ||
_pouf__finance.bic_commands() {
    local commands; commands=()
    _describe -t commands 'pouf finance.bic commands' commands "$@"
}
(( $+functions[_pouf__help_commands] )) ||
_pouf__help_commands() {
    local commands; commands=()
    _describe -t commands 'pouf help commands' commands "$@"
}
(( $+functions[_pouf__http.code_commands] )) ||
_pouf__http.code_commands() {
    local commands; commands=()
    _describe -t commands 'pouf http.code commands' commands "$@"
}
(( $+functions[_pouf__internet.color_commands] )) ||
_pouf__internet.color_commands() {
    local commands; commands=()
    _describe -t commands 'pouf internet.color commands' commands "$@"
}
(( $+functions[_pouf__internet.ip_commands] )) ||
_pouf__internet.ip_commands() {
    local commands; commands=()
    _describe -t commands 'pouf internet.ip commands' commands "$@"
}
(( $+functions[_pouf__internet.mac_commands] )) ||
_pouf__internet.mac_commands() {
    local commands; commands=()
    _describe -t commands 'pouf internet.mac commands' commands "$@"
}
(( $+functions[_pouf__internet.mail_commands] )) ||
_pouf__internet.mail_commands() {
    local commands; commands=()
    _describe -t commands 'pouf internet.mail commands' commands "$@"
}
(( $+functions[_pouf__internet.useragent_commands] )) ||
_pouf__internet.useragent_commands() {
    local commands; commands=()
    _describe -t commands 'pouf internet.useragent commands' commands "$@"
}
(( $+functions[_pouf__lorem.word_commands] )) ||
_pouf__lorem.word_commands() {
    local commands; commands=()
    _describe -t commands 'pouf lorem.word commands' commands "$@"
}
(( $+functions[_pouf__time.date_commands] )) ||
_pouf__time.date_commands() {
    local commands; commands=()
    _describe -t commands 'pouf time.date commands' commands "$@"
}
(( $+functions[_pouf__time.time_commands] )) ||
_pouf__time.time_commands() {
    local commands; commands=()
    _describe -t commands 'pouf time.time commands' commands "$@"
}

_pouf "$@"
