summaryrefslogtreecommitdiff
path: root/plugins/rake-fast/rake-fast.plugin.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/rake-fast/rake-fast.plugin.zsh')
-rw-r--r--plugins/rake-fast/rake-fast.plugin.zsh42
1 files changed, 22 insertions, 20 deletions
diff --git a/plugins/rake-fast/rake-fast.plugin.zsh b/plugins/rake-fast/rake-fast.plugin.zsh
index 57d699abc..ca80d86e1 100644
--- a/plugins/rake-fast/rake-fast.plugin.zsh
+++ b/plugins/rake-fast/rake-fast.plugin.zsh
@@ -1,26 +1,22 @@
-_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 () {
- [[ ! -f .rake_tasks ]] || [[ Rakefile -nt .rake_tasks ]] || (_is_rails_app && _tasks_changed)
+ [[ ! -f .rake_tasks ]] || [[ Rakefile -nt .rake_tasks ]] || { _is_rails_app && _tasks_changed }
}
_is_rails_app () {
- [[ -e "bin/rails" ]] || [ -e "script/rails" ]
+ [[ -e "bin/rails" ]] || [[ -e "script/rails" ]]
}
_tasks_changed () {
- local is_changed=1
- for file in lib/tasks/**/*.rake; do
- if [[ $file -nt .rake_tasks ]]; then is_changed=0; fi
+ local -a files
+ files=(lib/tasks lib/tasks/**/*(N))
+
+ for file in $files; do
+ if [[ "$file" -nt .rake_tasks ]]; then
+ return 0
+ fi
done
- return is_changed
+
+ return 1
}
_rake_generate () {
@@ -28,14 +24,20 @@ _rake_generate () {
}
_rake () {
- if [ -f Rakefile ]; then
+ if [[ -f Rakefile ]]; then
if _rake_does_task_list_need_generating; then
- echo "\nGenerating .rake_tasks..." > /dev/stderr
+ echo "\nGenerating .rake_tasks..." >&2
_rake_generate
fi
- compadd `cat .rake_tasks`
+ compadd $(cat .rake_tasks)
fi
}
-
compdef _rake rake
-alias rake_refresh='_rake_refresh'
+
+rake_refresh () {
+ [[ -f .rake_tasks ]] && rm -f .rake_tasks
+
+ echo "Generating .rake_tasks..." >&2
+ _rake_generate
+ cat .rake_tasks
+}