cake.plugin.zsh 712 Bytes
Newer Older
1
# Set this to 1 if you want to cache the tasks
2
_cake_cache_task_list=1
3
4

# Cache filename
5
6
7
8
9
_cake_task_cache_file='.cake_task_cache'

_cake_get_target_list () {
	cake | grep '^cake ' | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$'
}
10
11
12

_cake_does_target_list_need_generating () {

13
	if [ ${_cake_cache_task_list} -eq 0 ]; then
14
15
16
		return 1;
	fi

17
18
19
	[ ! -f ${_cake_task_cache_file} ] && return 0;
	[ ${_cake_task_cache_file} -nt Cakefile ] && return 0;
	return 1;
20
21
22
23
24
}

_cake () {
	if [ -f Cakefile ]; then
		if _cake_does_target_list_need_generating; then
25
26
			_cake_get_target_list > ${_cake_task_cache_file}
			compadd `cat ${_cake_task_cache_file}`
27
		else
28
			compadd `_cake_get_target_list`
29
30
31
32
		fi
	fi
}

33
compdef _cake cake