clevis 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # bash completion support for clevis.
  2. _clevis()
  3. {
  4. local dir prev cur field
  5. dir=$(dirname "$(command -v clevis)")
  6. prev=${COMP_WORDS[COMP_CWORD-1]}
  7. cur=${COMP_WORDS[COMP_CWORD]}
  8. field=$((COMP_CWORD + 1))
  9. case "${prev}" in
  10. -d)
  11. cur=${cur:=/dev/}
  12. _filedir
  13. return
  14. ;;
  15. -k)
  16. _filedir
  17. return
  18. ;;
  19. esac
  20. local name suggestions
  21. if [[ "${COMP_WORDS[COMP_CWORD-1]}" == "clevis" ]]; then
  22. name="clevis-*"
  23. fi
  24. if [[ "${COMP_WORDS[COMP_CWORD-2]}" == "clevis" ]]; then
  25. name="clevis-${COMP_WORDS[COMP_CWORD-1]}-*"
  26. fi
  27. suggestions=
  28. if [[ -n "${name}" ]]; then
  29. suggestions=$(find "${dir}" -name "${name}" -executable \
  30. | cut -d '-' -f"${field}" | sort -u)
  31. local word
  32. if [[ -n "${cur}" ]]; then
  33. suggestions=$(for word in "${suggestions[@]}"; do \
  34. echo "${word}" | grep -- "${cur}"; done)
  35. fi
  36. fi
  37. COMPREPLY=($(compgen -W "${suggestions}" -- "${cur}"))
  38. }
  39. complete -F _clevis clevis
  40. # vim: set ts=8 shiftwidth=4 softtabstop=4 expandtab smarttab colorcolumn=80: