| _rake() |
| { |
| local cur prev rakef i |
| |
| COMPREPLY=() |
| cur=${COMP_WORDS[COMP_CWORD]} |
| prev=${COMP_WORDS[COMP_CWORD-1]} |
| rakef="Rakefile" |
| |
| if [[ "$prev" == "-f" ]]; then |
| _filedir |
| return 0 |
| fi |
| |
| if [[ "$cur" == *=* ]]; then |
| prev=${cur/=*/} |
| cur=${cur/*=/} |
| if [[ "$prev" == "--rakefile=" ]]; then |
| _filedir -o nospace |
| return 0 |
| fi |
| fi |
| |
| if [[ "$cur" == -* ]]; then |
| COMPREPLY=( $( compgen -W '-n -H -I -N -P -q -f\ |
| -r -s -T -t -h -v -V\ |
| --dry-run --help '--libdir=' --nosearch --prereqs --quiet\ |
| '--rakefile=' '--require=' --silent --tasks --trace --usage\ |
| --verbose --version'\ |
| -- $cur )) |
| else |
| |
| for (( i=0; i < ${#COMP_WORDS[@]}; i++)); do |
| case "${COMP_WORDS[i]}" in |
| -f) |
| eval rakef=${COMP_WORDS[i+1]} |
| break |
| ;; |
| --rakefile=*|--rakefile\=*) |
| eval rakef=${COMP_WORDS[i]/*=/} |
| break |
| ;; |
| esac |
| done |
| |
| [ ! -f $rakef ] && return 0 |
| |
| COMPREPLY=( $( rake -s -f "$rakef" -T | \ |
| awk -F ' ' '/^rake / { print $2 }' | \ |
| command grep "^$cur" )) |
| |
| fi |
| } && |
| complete -F _rake $filenames rake |