diff --git a/modules/homebrew/init.zsh b/modules/homebrew/init.zsh index 78992587..a6fca815 100644 --- a/modules/homebrew/init.zsh +++ b/modules/homebrew/init.zsh @@ -21,7 +21,20 @@ fi # Load 'HOMEBREW_' prefixed variables only. Avoid loading 'PATH' related # variables as they are already handled in standard zsh configuration. if (( $+commands[brew] )); then - eval "${(@M)${(f)"$(brew shellenv 2> /dev/null)"}:#export HOMEBREW*}" + cache_file="${XDG_CACHE_HOME:-$HOME/.cache}/prezto/brew-shellenv-cache.zsh" + if [[ "${commands[brew]}" -nt "$cache_file" \ + || "${ZDOTDIR:-$HOME}/.zpreztorc" -nt "$cache_file" \ + || ( ! -n ${cache_file}(#qNmw-1) ) ]]; then + # Rebuild cache if either + # 1. brew is newer than the cache file + # 2. .zpreztorc is newer than the cache file + # 3. cache file doesn't exist + # 4. cache file is older than a week + mkdir -p "${cache_file:h}" + echo "${(@M)${(f)"$(brew shellenv 2> /dev/null)"}:#export HOMEBREW*}" >! "${cache_file}" + fi + source "${cache_file}" + unset cache_file fi #