Mini Shell
# 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: