# bash completion support for clevis.

_clevis()
{
    local dir prev cur field
    dir=$(dirname "$(command -v clevis)")
    prev=${COMP_WORDS[COMP_CWORD-1]}
    cur=${COMP_WORDS[COMP_CWORD]}
    field=$((COMP_CWORD + 1))

    case "${prev}" in
    -d)
        cur=${cur:=/dev/}
        _filedir
        return
        ;;
    -k)
        _filedir
        return
        ;;
    esac

    local name suggestions
    if [[ "${COMP_WORDS[COMP_CWORD-1]}" == "clevis" ]]; then
        name="clevis-*"
    fi

    if [[ "${COMP_WORDS[COMP_CWORD-2]}" == "clevis" ]]; then
        name="clevis-${COMP_WORDS[COMP_CWORD-1]}-*"
    fi

    suggestions=
    if [[ -n "${name}" ]]; then
        suggestions=$(find "${dir}" -name "${name}" -executable \
                      | cut -d '-' -f"${field}" | sort -u)

        local word
        if [[ -n "${cur}" ]]; then
            suggestions=$(for word in "${suggestions[@]}"; do \
                          echo "${word}" | grep -- "${cur}"; done)
        fi
    fi

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

complete -F _clevis clevis
# vim: set ts=8 shiftwidth=4 softtabstop=4 expandtab smarttab colorcolumn=80:
