# BASH completion script for pdm
# Generated by pycomplete 0.4.0

# Minimal fallbacks for the two `bash-completion` helpers used below,
# so the script also works when the `bash-completion` package is not
# loaded (e.g. Git Bash on Windows, minimal Linux containers).
# Only defined when the real helpers are not available.
if ! declare -F _get_comp_words_by_ref >/dev/null 2>&1; then
    _get_comp_words_by_ref() {
        # Accept the same option shape (-n <chars>, -c, -w, -p, -i, -e)
        # without honoring them, then populate the named variables
        # straight from $COMP_WORDS. pdm command and option names do
        # not contain word-break characters, so this matches the real
        # helper's output for every invocation in this script.
        while [[ $# -gt 0 && $1 == -* ]]; do
            if [[ $1 == -n && $# -ge 2 ]]; then
                shift 2
            else
                shift
            fi
        done
        local _var
        for _var in "$@"; do
            case $_var in
                cur)   cur="${COMP_WORDS[COMP_CWORD]}" ;;
                prev)  prev="${COMP_WORDS[COMP_CWORD-1]}" ;;
                words) words=("${COMP_WORDS[@]}") ;;
                cword) cword=$COMP_CWORD ;;
            esac
        done
    }
fi

if ! declare -F __ltrim_colon_completions >/dev/null 2>&1; then
    # No-op: pdm commands and options never contain `:`, so there is
    # nothing to trim when the real helper is unavailable.
    __ltrim_colon_completions() { :; }
fi

_pdm_a919b69078acdf0a_complete()
{
    local cur script coms opts com
    COMPREPLY=()
    _get_comp_words_by_ref -n : cur words

    # for an alias, get the real script behind it
    if [[ $(type -t ${words[0]}) == "alias" ]]; then
        script=$(alias ${words[0]} | sed -E "s/alias ${words[0]}='(.*)'/\\1/")
    else
        script=${words[0]}
    fi

    # lookup for command
    for word in ${words[@]:1}; do
        if [[ $word != -* ]]; then
            com=$word
            break
        fi
    done

    # completing for an option
    if [[ ${cur} == --* ]] ; then
        opts="--config --help --ignore-python --no-cache --non-interactive --pep582 --quiet --verbose --version"

        case "$com" in

            (add)
            opts="--config-setting --dev --dry-run --editable --fail-fast --frozen-lockfile --global --group --help --lockfile --no-editable --no-isolation --no-self --no-sync --override --prerelease --project --quiet --save-compatible --save-exact --save-minimum --save-safe-compatible --save-wildcard --skip --stable --unconstrained --update-all --update-eager --update-reuse --update-reuse-installed --venv --verbose"
            ;;

            (build)
            opts="--config-setting --dest --help --no-clean --no-isolation --no-sdist --no-wheel --project --quiet --skip --verbose"
            ;;

            (cache)
            opts="--help --quiet --verbose"
            ;;

            (completion)
            opts="--help"
            ;;

            (config)
            opts="--delete --edit --global --help --local --project --quiet --verbose"
            ;;

            (export)
            opts="--dev --editable-self --expandvars --format --global --group --help --lockfile --no-default --no-extras --no-markers --output --production --project --pyproject --quiet --self --verbose --without --without-hashes"
            ;;

            (fix)
            opts="--dry-run --global --help --project --quiet --verbose"
            ;;

            (import)
            opts="--dev --format --global --group --help --project --quiet --verbose"
            ;;

            (info)
            opts="--env --global --help --json --packages --project --python --quiet --venv --verbose --where"
            ;;

            (init)
            opts="--backend --cookiecutter --copier --dist --global --help --license --name --no-git --non-interactive --overwrite --project --project-version --python --quiet --skip --verbose"
            ;;

            (install)
            opts="--check --config-setting --dev --dry-run --fail-fast --frozen-lockfile --global --group --help --lockfile --no-default --no-editable --no-isolation --no-self --override --plugins --production --project --quiet --skip --venv --verbose --without"
            ;;

            (list)
            opts="--csv --exclude --fields --freeze --global --graph --help --include --json --markdown --project --quiet --resolve --reverse --sort --venv --verbose"
            ;;

            (lock)
            opts="--append --check --config-setting --dev --exclude-newer --global --group --help --implementation --lockfile --no-cross-platform --no-default --no-isolation --no-static-urls --override --platform --production --project --python --quiet --refresh --skip --static-urls --strategy --update-reuse --update-reuse-installed --verbose --without"
            ;;

            (new)
            opts="--backend --dist --help --license --name --no-git --non-interactive --overwrite --project-version --python --quiet --skip --verbose"
            ;;

            (outdated)
            opts="--global --help --include-sub --json --project --quiet --verbose"
            ;;

            (plugin)
            opts="--help --quiet --verbose"
            ;;

            (publish)
            opts="--ca-certs --comment --dest --help --identity --no-build --no-very-ssl --password --project --quiet --repository --sign --skip --skip-existing --username --verbose"
            ;;

            (py)
            opts="--help"
            ;;

            (python)
            opts="--help"
            ;;

            (remove)
            opts="--config-setting --dev --dry-run --fail-fast --frozen-lockfile --global --group --help --lockfile --no-editable --no-isolation --no-self --no-sync --override --project --quiet --skip --venv --verbose"
            ;;

            (run)
            opts="--global --help --json --list --project --quiet --recreate --site-packages --skip --venv --verbose"
            ;;

            (search)
            opts="--help --quiet --verbose"
            ;;

            (self)
            opts="--help --quiet --verbose"
            ;;

            (show)
            opts="--global --help --keywords --license --name --platform --project --quiet --summary --venv --verbose --version"
            ;;

            (sync)
            opts="--clean --clean-unselected --config-setting --dev --dry-run --fail-fast --global --group --help --lockfile --no-default --no-editable --no-isolation --no-self --production --project --quiet --reinstall --skip --venv --verbose --without"
            ;;

            (update)
            opts="--config-setting --dev --fail-fast --frozen-lockfile --global --group --help --lockfile --no-default --no-editable --no-isolation --no-self --no-sync --outdated --override --prerelease --production --project --quiet --save-compatible --save-exact --save-minimum --save-safe-compatible --save-wildcard --skip --stable --top --unconstrained --update-all --update-eager --update-reuse --update-reuse-installed --venv --verbose --without"
            ;;

            (use)
            opts="--auto-install-max --auto-install-min --first --global --help --ignore-remembered --no-version-file --project --quiet --skip --venv --verbose"
            ;;

            (venv)
            opts="--help --path --project --python"
            ;;

        esac

        COMPREPLY=($(compgen -W "${opts}" -- ${cur}))
        __ltrim_colon_completions "$cur"

        return 0;
    fi

    # completing for a command
    if [[ $cur == $com ]]; then
        coms="add build cache completion config export fix import info init install list lock new outdated plugin publish py python remove run search self show sync update use venv"

        COMPREPLY=($(compgen -W "${coms}" -- ${cur}))
        __ltrim_colon_completions "$cur"

        return 0
    fi
}

complete -o default -F _pdm_a919b69078acdf0a_complete pdm
