66c6260c |
# Set this to 1 if you want to cache the tasks |
c09e2f29 |
cache_task_list=1 |
66c6260c |
# Cache filename |
c09e2f29 |
cache_file='.cake_task_cache' |
66c6260c |
_cake_does_target_list_need_generating () {
|
c09e2f29 |
if [ $cache_task_list -eq 0 ]; then |
66c6260c |
return 1;
fi
|
c09e2f29 |
if [ ! -f $cache_file ]; then return 0; |
66c6260c |
else |
c09e2f29 |
accurate=$(stat -f%m $cache_file) |
66c6260c |
changed=$(stat -f%m Cakefile)
return $(expr $accurate '>=' $changed)
fi
}
_cake () {
if [ -f Cakefile ]; then
if _cake_does_target_list_need_generating; then |
c09e2f29 |
cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$' > $cache_file
compadd `cat $cache_file` |
66c6260c |
else
compadd `cake | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'`
fi
fi
}
compdef _cake cake |