1_my-app() { 2 local i cur prev opts cmd 3 COMPREPLY=() 4 cur="${COMP_WORDS[COMP_CWORD]}" 5 prev="${COMP_WORDS[COMP_CWORD-1]}" 6 cmd="" 7 opts="" 8 9 for i in ${COMP_WORDS[@]} 10 do 11 case "${cmd},${i}" in 12 ",$1") 13 cmd="my__app" 14 ;; 15 *) 16 ;; 17 esac 18 done 19 20 case "${cmd}" in 21 my__app) 22 opts="-p -f -d -e -c -u -H -h --choice --unknown --other --path --file --dir --exe --cmd-name --cmd --user --host --url --email --help [command_with_args]..." 23 if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then 24 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) 25 return 0 26 fi 27 case "${prev}" in 28 --choice) 29 COMPREPLY=($(compgen -W "bash fish zsh" -- "${cur}")) 30 return 0 31 ;; 32 --unknown) 33 COMPREPLY=($(compgen -f "${cur}")) 34 return 0 35 ;; 36 --other) 37 COMPREPLY=($(compgen -f "${cur}")) 38 return 0 39 ;; 40 --path) 41 COMPREPLY=($(compgen -f "${cur}")) 42 return 0 43 ;; 44 -p) 45 COMPREPLY=($(compgen -f "${cur}")) 46 return 0 47 ;; 48 --file) 49 COMPREPLY=($(compgen -f "${cur}")) 50 return 0 51 ;; 52 -f) 53 COMPREPLY=($(compgen -f "${cur}")) 54 return 0 55 ;; 56 --dir) 57 COMPREPLY=($(compgen -f "${cur}")) 58 return 0 59 ;; 60 -d) 61 COMPREPLY=($(compgen -f "${cur}")) 62 return 0 63 ;; 64 --exe) 65 COMPREPLY=($(compgen -f "${cur}")) 66 return 0 67 ;; 68 -e) 69 COMPREPLY=($(compgen -f "${cur}")) 70 return 0 71 ;; 72 --cmd-name) 73 COMPREPLY=($(compgen -f "${cur}")) 74 return 0 75 ;; 76 --cmd) 77 COMPREPLY=($(compgen -f "${cur}")) 78 return 0 79 ;; 80 -c) 81 COMPREPLY=($(compgen -f "${cur}")) 82 return 0 83 ;; 84 --user) 85 COMPREPLY=($(compgen -f "${cur}")) 86 return 0 87 ;; 88 -u) 89 COMPREPLY=($(compgen -f "${cur}")) 90 return 0 91 ;; 92 --host) 93 COMPREPLY=($(compgen -f "${cur}")) 94 return 0 95 ;; 96 -H) 97 COMPREPLY=($(compgen -f "${cur}")) 98 return 0 99 ;; 100 --url) 101 COMPREPLY=($(compgen -f "${cur}")) 102 return 0 103 ;; 104 --email) 105 COMPREPLY=($(compgen -f "${cur}")) 106 return 0 107 ;; 108 *) 109 COMPREPLY=() 110 ;; 111 esac 112 COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") ) 113 return 0 114 ;; 115 esac 116} 117 118complete -F _my-app -o bashdefault -o default my-app 119