_minijinja_cli() {
    local i w cur cmd value_for opts_done pos prefix
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    value_for=""
    opts_done=0
    pos=0
    prefix=""
    cmd='minijinja_cli'

    for (( i=1; i<COMP_CWORD; i++ )); do
        w="${COMP_WORDS[i]}"
        if [[ -n "$value_for" ]]; then
            [[ "$w" == "=" ]] && continue
            value_for=""
            continue
        fi
        if (( ! opts_done )); then
            if [[ "$w" == "--" ]]; then
                opts_done=1
                continue
            fi
            if [[ "$w" == -?* ]]; then
                case "$cmd:$w" in
                    'minijinja_cli:--config-file'|'minijinja_cli:-f'|'minijinja_cli:--format'|'minijinja_cli:-D'|'minijinja_cli:--define'|'minijinja_cli:-t'|'minijinja_cli:--template'|'minijinja_cli:-o'|'minijinja_cli:--output'|'minijinja_cli:--select'|'minijinja_cli:-a'|'minijinja_cli:--autoescape'|'minijinja_cli:-s'|'minijinja_cli:--syntax'|'minijinja_cli:--safe-path'|'minijinja_cli:--fuel'|'minijinja_cli:-E'|'minijinja_cli:--expr'|'minijinja_cli:--expr-out'|'minijinja_cli:--dump'|'minijinja_cli:--generate-completion') value_for="$w" ;;
                    *) ;;
                esac
                continue
            fi
        fi
        case "$cmd:$w" in
            *) ;;
        esac
        pos=$((pos + 1))
    done

    if [[ -z "$value_for" && $opts_done -eq 0 && "$cur" == --*=* ]]; then
        value_for="${cur%%=*}"
        prefix="${value_for}="
        cur="${cur#*=}"
    elif [[ -n "$value_for" && "$cur" == "=" ]]; then
        cur=""
    fi

    if [[ -n "$value_for" ]]; then
        case "$cmd:$value_for" in
            'minijinja_cli:--config-file') : ;;
            'minijinja_cli:-f'|'minijinja_cli:--format') COMPREPLY+=($(compgen -W 'auto cbor ini json querystring toml yaml' -- "$cur")) ;;
            'minijinja_cli:-D'|'minijinja_cli:--define') : ;;
            'minijinja_cli:-t'|'minijinja_cli:--template') : ;;
            'minijinja_cli:-o'|'minijinja_cli:--output') : ;;
            'minijinja_cli:--select') : ;;
            'minijinja_cli:-a'|'minijinja_cli:--autoescape') COMPREPLY+=($(compgen -W 'auto html json none' -- "$cur")) ;;
            'minijinja_cli:-s'|'minijinja_cli:--syntax') : ;;
            'minijinja_cli:--safe-path') while IFS= read -r i; do COMPREPLY+=("$i"); done < <(compgen -d -- "$cur") ;;
            'minijinja_cli:--fuel') : ;;
            'minijinja_cli:-E'|'minijinja_cli:--expr') : ;;
            'minijinja_cli:--expr-out') COMPREPLY+=($(compgen -W 'print json json-pretty status' -- "$cur")) ;;
            'minijinja_cli:--dump') COMPREPLY+=($(compgen -W 'instructions ast tokens' -- "$cur")) ;;
            'minijinja_cli:--generate-completion') COMPREPLY+=($(compgen -W 'bash elvish fish nushell powershell zsh' -- "$cur")) ;;
            *) ;;
        esac
        if [[ -n "$prefix" ]]; then
            COMPREPLY=("${COMPREPLY[@]/#/$prefix}")
        fi
        return 0
    fi

    if (( ! opts_done )) && [[ "$cur" == -* ]]; then
        case "$cmd" in
            'minijinja_cli') COMPREPLY=($(compgen -W '--config-file -f --format -D --define -t --template -o --output --select --print-config -h --help --long-help --syntax-help -V --version -a --autoescape --strict -n --no-newline --trim-blocks --lstrip-blocks --py-compat -s --syntax --env --no-include --safe-path --fuel -E --expr --expr-out --dump --repl --generate-completion' -- "$cur")) ;;
        esac
        return 0
    fi

    case "$cmd" in
        'minijinja_cli')
            case "$pos" in
                0) : ;;
                *) : ;;
            esac
            ;;
    esac
    return 0
}

if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
    complete -F _minijinja_cli -o nosort -o bashdefault -o default 'minijinja-cli'
else
    complete -F _minijinja_cli -o bashdefault -o default 'minijinja-cli'
fi
