parent
4ce7f0a37f
commit
1a029f2935
1 changed files with 56 additions and 0 deletions
@ -0,0 +1,56 @@ |
||||
# rake-fast |
||||
# Fast rake autocompletion plugin for oh-my-zsh |
||||
|
||||
# This script caches the output for later usage and significantly speeds it up. |
||||
# It generates a .rake_tasks file in parallel to the Rakefile. |
||||
|
||||
# You'll want to add `.rake_tasks` to your global .git_ignore file: |
||||
# https://help.github.com/articles/ignoring-files#global-gitignore |
||||
|
||||
# You can force .rake_tasks to refresh with: |
||||
# $ rake_refresh |
||||
|
||||
# This is entirely based on Ullrich Schäfer's work |
||||
# (https://github.com/robb/.dotfiles/pull/10/), |
||||
# which is inspired by this Ruby on Rails trick from 2006: |
||||
# http://weblog.rubyonrails.org/2006/3/9/fast-rake-task-completion-for-zsh/ |
||||
|
||||
# Author: Kevin Bongart |
||||
# contact@kevinbongart.net |
||||
# http://kevinbongart.net |
||||
# https://github.com/KevinBongart |
||||
|
||||
_rake_refresh () { |
||||
if [ -f .rake_tasks ]; then |
||||
rm .rake_tasks |
||||
fi |
||||
echo "Generating .rake_tasks..." > /dev/stderr |
||||
_rake_generate |
||||
cat .rake_tasks |
||||
} |
||||
|
||||
_rake_does_task_list_need_generating () { |
||||
if [ ! -f .rake_tasks ]; then return 0; |
||||
else |
||||
accurate=$(stat -f%m .rake_tasks) |
||||
changed=$(stat -f%m Rakefile) |
||||
return $(expr $accurate '>=' $changed) |
||||
fi |
||||
} |
||||
|
||||
_rake_generate () { |
||||
rake --silent --tasks | cut -d " " -f 2 > .rake_tasks |
||||
} |
||||
|
||||
_rake () { |
||||
if [ -f Rakefile ]; then |
||||
if _rake_does_task_list_need_generating; then |
||||
echo "\nGenerating .rake_tasks..." > /dev/stderr |
||||
_rake_generate |
||||
fi |
||||
compadd `cat .rake_tasks` |
||||
fi |
||||
} |
||||
|
||||
compdef _rake rake |
||||
alias rake_refresh='_rake_refresh' |
||||
Loading…
Reference in new issue