# pylint(1) completion                                     -*- shell-script -*-

_pylint()
{
    local cur prev words cword split
    _init_completion -s || return

    local python=python
    [[ ${1##*/} == *3* ]] && python=python3

    case $prev in
        --version | --help | --long-help | --help-msg | --init-hook | --ignore | --enable | \
            --evaluation | --max-line-length | --max-module-lines | \
            --indent-string | --min-similarity-lines | --max-args | \
            --ignored-argument-names | --max-locals | --max-returns | --max-branchs | \
            --max-statements | --max-parents | --max-attributes | --min-public-methods | \
            --max-public-methods | --required-attributes | --bad-functions | \
            --module-rgx | --const-rgx | --class-rgx | --function-rgx | --method-rgx | \
            --attr-rgx | --argument-rgx | --variable-rgx | --inlinevar-rgx | --good-names | \
            --bad-names | --no-docstring-rgx | --dummy-variables-rgx | \
            --additional-builtins | --notes | --ignored-classes | --generated-members | \
            --overgeneral-exceptions | --ignore-iface-methods | \
            --defining-attr-methods | --valid-classmethod-first-arg | \
            --valid-metaclass-classmethod-first-arg | -!(-*)[he])
            return
            ;;
        --disable | -!(-*)d)
            COMPREPLY=($(compgen -W 'all' -- "$cur"))
            return
            ;;
        --rcfile)
            _filedir
            return
            ;;
        --persistent | --include-ids | --symbols | --files-output | --reports | \
            --comment | --ignore-comments | --ignore-docstrings | --ignore-imports | \
            --init-import | --ignore-mixin-members | --zope | --suggestion-mode | \
            -!(-*)[isr])
            COMPREPLY=($(compgen -W 'yes no' -- "$cur"))
            return
            ;;
        --load-plugins | --deprecated-modules)
            local prefix=
            [[ $cur == *,* ]] && prefix="${cur%,*},"
            cur="${cur##*,}"
            _xfunc python _python_modules $python
            ((${#COMPREPLY[@]} == 1)) && COMPREPLY=(${COMPREPLY/#/$prefix})
            return
            ;;
        --jobs | -!(-*)j)
            COMPREPLY=($(compgen -W "{1..$(_ncpus)}" -- "$cur"))
            return
            ;;
        --confidence)
            local prefix=
            [[ $cur == *,* ]] && prefix="${cur%,*},"
            COMPREPLY=($(compgen -W "HIGH INFERENCE INFERENCE_FAILURE
                UNDEFINED" -- "${cur##*,}"))
            ((${#COMPREPLY[@]} == 1)) && COMPREPLY=(${COMPREPLY/#/$prefix})
            return
            ;;
        --format | -!(-*)f)
            COMPREPLY=($(compgen -W 'text parseable colorized json msvs' \
                -- "$cur"))
            return
            ;;
        --import-graph | --ext-import-graph | --int-import-graph)
            _filedir dot
            return
            ;;
    esac

    $split && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W \
            '$(_parse_help "$1" --long-help)' -- "$cur"))
        [[ ${COMPREPLY-} == *= ]] && compopt -o nospace
        return
    fi

    [[ $cur == @(.|*/)* ]] || _xfunc python _python_modules $python
    _filedir py
} &&
    complete -F _pylint pylint pylint-2 pylint-3

# ex: filetype=sh
