zerotier-cli-completion.bash 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #compdef zerotier-cli
  2. #autoload
  3. _get_network_ids ()
  4. {
  5. if [[ "$OSTYPE" == "darwin"* ]]; then
  6. COMPREPLY=($(compgen -W "$(ls -1 /Library/Application\ Support/ZeroTier/One/networks.d | cut -c 1-16)" -- ${cur}))
  7. else
  8. COMPREPLY=($(compgen -W "$(ls -1 /var/lib/zerotier-one/networks.d | cut -c 1-16)" -- ${cur}))
  9. fi
  10. }
  11. _get_network_ids_from_history ()
  12. {
  13. COMPREPLY=($(compgen -W "$(fc -l -1000 -1 | sed -n 's/.*\([[:xdigit:]]\{16\}\).*/\1/p')" -- ${cur}))
  14. }
  15. _zerotier-cli_completions()
  16. {
  17. local cur prev
  18. cur=${COMP_WORDS[COMP_CWORD]}
  19. prev=${COMP_WORDS[COMP_CWORD-1]}
  20. case ${COMP_CWORD} in
  21. 1)
  22. COMPREPLY=($(compgen -W "info listpeers peers listnetworks join leave set get listmoons orbit deorbit" -- ${cur}))
  23. ;;
  24. 2)
  25. case ${prev} in
  26. leave)
  27. _get_network_ids
  28. ;;
  29. join)
  30. _get_network_ids_from_history
  31. ;;
  32. set)
  33. _get_network_ids
  34. ;;
  35. get)
  36. _get_network_ids
  37. ;;
  38. *)
  39. COMPREPLY=()
  40. ;;
  41. esac
  42. ;;
  43. *)
  44. COMPREPLY=()
  45. ;;
  46. esac
  47. }
  48. complete -F _zerotier-cli_completions zerotier-cli