• Marc Cornellà's avatar
    Switch newer-than logic to get the desired behavior · e6045879
    Marc Cornellà authored
    In the old version, the function returned true (0) if the cache file
    was newer than the Cakefile, which was *always* unless the Cakefile
    had been updated. Therefore we generated the file every time unless
    the Cakefile was updated, which was precisely when we needed to
    regenerate the cache file.
    
    Now it generates the cache file only when the Cakefile has been
    updated.
    e6045879
cake.plugin.zsh 712 Bytes
# Set this to 1 if you want to cache the tasks
_cake_cache_task_list=1

# Cache filename
_cake_task_cache_file='.cake_task_cache'

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

_cake_does_target_list_need_generating () {

	if [ ${_cake_cache_task_list} -eq 0 ]; then
		return 1;
	fi

	[ ! -f ${_cake_task_cache_file} ] && return 0;
	[ Cakefile -nt ${_cake_task_cache_file} ] && return 0;
	return 1;
}

_cake () {
	if [ -f Cakefile ]; then
		if _cake_does_target_list_need_generating; then
			_cake_get_target_list > ${_cake_task_cache_file}
			compadd `cat ${_cake_task_cache_file}`
		else
			compadd `_cake_get_target_list`
		fi
	fi
}

compdef _cake cake