diff options
Diffstat (limited to 'dev-ruby/rake/files/rake.bash-completion')
-rw-r--r-- | dev-ruby/rake/files/rake.bash-completion | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/dev-ruby/rake/files/rake.bash-completion b/dev-ruby/rake/files/rake.bash-completion new file mode 100644 index 000000000000..dbdfbd02c410 --- /dev/null +++ b/dev-ruby/rake/files/rake.bash-completion @@ -0,0 +1,54 @@ +_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 |