_diesel() {
    local i cur prev opts cmd
    COMPREPLY=()
    if [[ "${BASH_VERSINFO[0]}" -ge 4 ]]; then
        cur="$2"
    else
        cur="${COMP_WORDS[COMP_CWORD]}"
    fi
    prev="$3"
    cmd=""
    opts=""

    for i in "${COMP_WORDS[@]:0:COMP_CWORD}"
    do
        case "${cmd},${i}" in
            ",$1")
                cmd="diesel"
                ;;
            diesel,completions)
                cmd="diesel__subcmd__completions"
                ;;
            diesel,database)
                cmd="diesel__subcmd__database"
                ;;
            diesel,help)
                cmd="diesel__subcmd__help"
                ;;
            diesel,migration)
                cmd="diesel__subcmd__migration"
                ;;
            diesel,print-schema)
                cmd="diesel__subcmd__print__subcmd__schema"
                ;;
            diesel,setup)
                cmd="diesel__subcmd__setup"
                ;;
            diesel__subcmd__database,drop)
                cmd="diesel__subcmd__database__subcmd__drop"
                ;;
            diesel__subcmd__database,help)
                cmd="diesel__subcmd__database__subcmd__help"
                ;;
            diesel__subcmd__database,reset)
                cmd="diesel__subcmd__database__subcmd__reset"
                ;;
            diesel__subcmd__database,setup)
                cmd="diesel__subcmd__database__subcmd__setup"
                ;;
            diesel__subcmd__database__subcmd__help,drop)
                cmd="diesel__subcmd__database__subcmd__help__subcmd__drop"
                ;;
            diesel__subcmd__database__subcmd__help,help)
                cmd="diesel__subcmd__database__subcmd__help__subcmd__help"
                ;;
            diesel__subcmd__database__subcmd__help,reset)
                cmd="diesel__subcmd__database__subcmd__help__subcmd__reset"
                ;;
            diesel__subcmd__database__subcmd__help,setup)
                cmd="diesel__subcmd__database__subcmd__help__subcmd__setup"
                ;;
            diesel__subcmd__help,completions)
                cmd="diesel__subcmd__help__subcmd__completions"
                ;;
            diesel__subcmd__help,database)
                cmd="diesel__subcmd__help__subcmd__database"
                ;;
            diesel__subcmd__help,help)
                cmd="diesel__subcmd__help__subcmd__help"
                ;;
            diesel__subcmd__help,migration)
                cmd="diesel__subcmd__help__subcmd__migration"
                ;;
            diesel__subcmd__help,print-schema)
                cmd="diesel__subcmd__help__subcmd__print__subcmd__schema"
                ;;
            diesel__subcmd__help,setup)
                cmd="diesel__subcmd__help__subcmd__setup"
                ;;
            diesel__subcmd__help__subcmd__database,drop)
                cmd="diesel__subcmd__help__subcmd__database__subcmd__drop"
                ;;
            diesel__subcmd__help__subcmd__database,reset)
                cmd="diesel__subcmd__help__subcmd__database__subcmd__reset"
                ;;
            diesel__subcmd__help__subcmd__database,setup)
                cmd="diesel__subcmd__help__subcmd__database__subcmd__setup"
                ;;
            diesel__subcmd__help__subcmd__migration,generate)
                cmd="diesel__subcmd__help__subcmd__migration__subcmd__generate"
                ;;
            diesel__subcmd__help__subcmd__migration,list)
                cmd="diesel__subcmd__help__subcmd__migration__subcmd__list"
                ;;
            diesel__subcmd__help__subcmd__migration,pending)
                cmd="diesel__subcmd__help__subcmd__migration__subcmd__pending"
                ;;
            diesel__subcmd__help__subcmd__migration,redo)
                cmd="diesel__subcmd__help__subcmd__migration__subcmd__redo"
                ;;
            diesel__subcmd__help__subcmd__migration,revert)
                cmd="diesel__subcmd__help__subcmd__migration__subcmd__revert"
                ;;
            diesel__subcmd__help__subcmd__migration,run)
                cmd="diesel__subcmd__help__subcmd__migration__subcmd__run"
                ;;
            diesel__subcmd__migration,generate)
                cmd="diesel__subcmd__migration__subcmd__generate"
                ;;
            diesel__subcmd__migration,help)
                cmd="diesel__subcmd__migration__subcmd__help"
                ;;
            diesel__subcmd__migration,list)
                cmd="diesel__subcmd__migration__subcmd__list"
                ;;
            diesel__subcmd__migration,pending)
                cmd="diesel__subcmd__migration__subcmd__pending"
                ;;
            diesel__subcmd__migration,redo)
                cmd="diesel__subcmd__migration__subcmd__redo"
                ;;
            diesel__subcmd__migration,revert)
                cmd="diesel__subcmd__migration__subcmd__revert"
                ;;
            diesel__subcmd__migration,run)
                cmd="diesel__subcmd__migration__subcmd__run"
                ;;
            diesel__subcmd__migration__subcmd__help,generate)
                cmd="diesel__subcmd__migration__subcmd__help__subcmd__generate"
                ;;
            diesel__subcmd__migration__subcmd__help,help)
                cmd="diesel__subcmd__migration__subcmd__help__subcmd__help"
                ;;
            diesel__subcmd__migration__subcmd__help,list)
                cmd="diesel__subcmd__migration__subcmd__help__subcmd__list"
                ;;
            diesel__subcmd__migration__subcmd__help,pending)
                cmd="diesel__subcmd__migration__subcmd__help__subcmd__pending"
                ;;
            diesel__subcmd__migration__subcmd__help,redo)
                cmd="diesel__subcmd__migration__subcmd__help__subcmd__redo"
                ;;
            diesel__subcmd__migration__subcmd__help,revert)
                cmd="diesel__subcmd__migration__subcmd__help__subcmd__revert"
                ;;
            diesel__subcmd__migration__subcmd__help,run)
                cmd="diesel__subcmd__migration__subcmd__help__subcmd__run"
                ;;
            *)
                ;;
        esac
    done

    case "${cmd}" in
        diesel)
            opts="-h -V --database-url --config-file --locked-schema --help --version migration setup database completions print-schema help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__completions)
            opts="-h --database-url --config-file --locked-schema --help bash elvish fish powershell zsh"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__database)
            opts="-h --migration-dir --database-url --config-file --locked-schema --help setup reset drop help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__database__subcmd__drop)
            opts="-h --migration-dir --database-url --config-file --locked-schema --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__database__subcmd__help)
            opts="setup reset drop help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__database__subcmd__help__subcmd__drop)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__database__subcmd__help__subcmd__help)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__database__subcmd__help__subcmd__reset)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__database__subcmd__help__subcmd__setup)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__database__subcmd__reset)
            opts="-h --no-default-migration --migration-dir --database-url --config-file --locked-schema --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__database__subcmd__setup)
            opts="-h --no-default-migration --migration-dir --database-url --config-file --locked-schema --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help)
            opts="migration setup database completions print-schema help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__completions)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__database)
            opts="setup reset drop"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__database__subcmd__drop)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__database__subcmd__reset)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__database__subcmd__setup)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__help)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__migration)
            opts="run revert redo list pending generate"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__migration__subcmd__generate)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__migration__subcmd__list)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__migration__subcmd__pending)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__migration__subcmd__redo)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__migration__subcmd__revert)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__migration__subcmd__run)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__print__subcmd__schema)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__help__subcmd__setup)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration)
            opts="-h --migration-dir --database-url --config-file --locked-schema --help run revert redo list pending generate help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__generate)
            opts="-u -o -e -h --version --no-down --format --diff-schema --sqlite-integer-primary-key-is-bigint --only-tables --except-tables --schema-key --migration-dir --database-url --config-file --locked-schema --help <MIGRATION_NAME> [table-name]..."
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --version)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --format)
                    COMPREPLY=($(compgen -W "sql" -- "${cur}"))
                    return 0
                    ;;
                --diff-schema)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --schema-key)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__help)
            opts="run revert redo list pending generate help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__help__subcmd__generate)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__help__subcmd__help)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__help__subcmd__list)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__help__subcmd__pending)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__help__subcmd__redo)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__help__subcmd__revert)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__help__subcmd__run)
            opts=""
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 4 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__list)
            opts="-h --migration-dir --database-url --config-file --locked-schema --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__pending)
            opts="-h --migration-dir --database-url --config-file --locked-schema --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__redo)
            opts="-a -n -h --all --number --migration-dir --database-url --config-file --locked-schema --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --number)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -n)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__revert)
            opts="-a -n -h --all --number --migration-dir --database-url --config-file --locked-schema --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --number)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -n)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__migration__subcmd__run)
            opts="-h --migration-dir --database-url --config-file --locked-schema --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 3 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__print__subcmd__schema)
            opts="-s -o -e -h --schema --only-tables --except-tables --with-docs --with-docs-config --allow-tables-to-appear-in-same-query-config --column-sorting --patch-file --import-types --no-generate-missing-sql-type-definitions --except-custom-type-definitions --custom-type-derives --pg-domains-as-custom-types --schema-key --sqlite-integer-primary-key-is-bigint --database-url --config-file --locked-schema --help [table-name]..."
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --schema)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                -s)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --with-docs-config)
                    COMPREPLY=($(compgen -W "database-comments-fallback-to-auto-generated-doc-comment only-database-comments no-doc-comments" -- "${cur}"))
                    return 0
                    ;;
                --allow-tables-to-appear-in-same-query-config)
                    COMPREPLY=($(compgen -W "fk_related_tables all_tables none" -- "${cur}"))
                    return 0
                    ;;
                --column-sorting)
                    COMPREPLY=($(compgen -W "ordinal_position name" -- "${cur}"))
                    return 0
                    ;;
                --patch-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --import-types)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --except-custom-type-definitions)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --custom-type-derives)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --pg-domains-as-custom-types)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --schema-key)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
        diesel__subcmd__setup)
            opts="-h --migration-dir --no-default-migration --database-url --config-file --locked-schema --help"
            if [[ ${cur} == -* || ${COMP_CWORD} -eq 2 ]] ; then
                COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
                return 0
            fi
            case "${prev}" in
                --migration-dir)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --database-url)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                --config-file)
                    COMPREPLY=($(compgen -f "${cur}"))
                    return 0
                    ;;
                *)
                    COMPREPLY=()
                    ;;
            esac
            COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
            return 0
            ;;
    esac
}

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