myapp.rc 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. alias myapp="python ./myapp.py"
  2. _myapp_complete()
  3. {
  4. local cur prev BASE_LEVEL
  5. COMPREPLY=()
  6. cur=${COMP_WORDS[COMP_CWORD]}
  7. prev=${COMP_WORDS[COMP_CWORD-1]}
  8. # SETUP THE BASE LEVEL (everything after "myapp")
  9. if [ $COMP_CWORD -eq 1 ]; then
  10. COMPREPLY=( $(compgen \
  11. -W "base-cmd1 base-cmd2 embedded-cmd3 second" \
  12. -- $cur) )
  13. # SETUP THE SECOND LEVEL (EVERYTHING AFTER "myapp second")
  14. elif [ $COMP_CWORD -eq 2 ]; then
  15. case "$prev" in
  16. # HANDLE EVERYTHING AFTER THE SECOND LEVEL NAMESPACE
  17. "second")
  18. COMPREPLY=( $(compgen \
  19. -W "second-cmd4 second-cmd5 third" \
  20. -- $cur) )
  21. ;;
  22. # IF YOU HAD ANOTHER CONTROLLER, YOU'D HANDLE THAT HERE
  23. "some-other-controller")
  24. COMPREPLY=( $(compgen \
  25. -W "some-other-sub-command" \
  26. -- $cur) )
  27. ;;
  28. # EVERYTHING ELSE
  29. *)
  30. ;;
  31. esac
  32. # SETUP THE THIRD LEVEL (EVERYTHING AFTER "myapp second third")
  33. elif [ $COMP_CWORD -eq 3 ]; then
  34. case "$prev" in
  35. # HANDLE EVERYTHING AFTER THE THIRD LEVEL NAMESPACE
  36. "third")
  37. COMPREPLY=( $(compgen \
  38. -W "third-cmd6 third-cmd7" \
  39. -- $cur) )
  40. ;;
  41. # IF YOU HAD ANOTHER CONTROLLER, YOU'D HANDLE THAT HERE
  42. "some-other-controller")
  43. COMPREPLY=( $(compgen \
  44. -W "some-other-sub-command" \
  45. -- $cur) )
  46. ;;
  47. *)
  48. ;;
  49. esac
  50. fi
  51. return 0
  52. } &&
  53. complete -F _myapp_complete myapp