#autoload
#
# Function to decide whether a completions cache needs rebuilding

local _cache_ident _cache_dir _cache_path _cache_policy
_cache_ident="$1"

# If the cache is disabled, we never want to rebuild it, so pretend
# it's valid.
zstyle -t ":completion:${curcontext}:" use-cache || return 1

zstyle -s ":completion:${curcontext}:" cache-path _cache_dir
: ${_cache_dir:=${ZDOTDIR:-$HOME}/.zcompcache}
_cache_path="$_cache_dir/$_cache_ident"

# See whether the caching policy says that the cache needs rebuilding
# (the policy will return 0 if it does).
zstyle -s ":completion:${curcontext}:" cache-policy _cache_policy
[[ -n "$_cache_policy" ]] && "$_cache_policy" "$_cache_path" && return 0

return 1
