cake.plugin.zsh
712 bytes
1# Set this to 1 if you want to cache the tasks
2_cake_cache_task_list=1
3
4# Cache filename
5_cake_task_cache_file='.cake_task_cache'
6
7_cake_get_target_list () {
8 cake | grep '^cake ' | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'
9}
10
11_cake_does_target_list_need_generating () {
12
13 if [ ${_cake_cache_task_list} -eq 0 ]; then
14 return 1;
15 fi
16
17 [ ! -f ${_cake_task_cache_file} ] && return 0;
18 [ Cakefile -nt ${_cake_task_cache_file} ] && return 0;
19 return 1;
20}
21
22_cake () {
23 if [ -f Cakefile ]; then
24 if _cake_does_target_list_need_generating; then
25 _cake_get_target_list > ${_cake_task_cache_file}
26 compadd `cat ${_cake_task_cache_file}`
27 else
28 compadd `_cake_get_target_list`
29 fi
30 fi
31}
32
33compdef _cake cake