From 005709d1201a6ad2f8b01b0185623e6d192d6c44 Mon Sep 17 00:00:00 2001 From: Yutian Li Date: Fri, 5 Apr 2024 19:21:15 -0400 Subject: [PATCH] Cache brew shellenv results This could sometimes be slow (as with any external command execution) but the result should almost never change. --- modules/homebrew/init.zsh | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 #