diff --git a/chezmoi/dot_zshrc b/chezmoi/dot_zshrc index bae771d..dfd1502 100644 --- a/chezmoi/dot_zshrc +++ b/chezmoi/dot_zshrc @@ -1,6 +1,9 @@ #!/usr/bin/zsh zmodload zsh/datetime +# load the stat module but only with the `zstat` command +# leave `stat` to the system's stat command +zmodload -F zsh/stat b:zstat autoload -Uz \ colors \ diff --git a/chezmoi/dot_zshrc.d/executable_chezmoi.zsh b/chezmoi/dot_zshrc.d/executable_chezmoi.zsh index 67e628d..92ac88c 100644 --- a/chezmoi/dot_zshrc.d/executable_chezmoi.zsh +++ b/chezmoi/dot_zshrc.d/executable_chezmoi.zsh @@ -6,10 +6,10 @@ COMPLETION_FILE="${ZSH_COMPLETIONS_DIR}/_chezmoi" if [ -r "$COMPLETION_FILE" ]; then - COMPLETION_FILE_CTIME="$(stat -c %Z "$COMPLETION_FILE")" - CHEZMOI_FILE_CTIME="$(stat -c %Z "${CHEZMOI_PATH}")" + zstat -H COMPLETION_FILE_STAT "$COMPLETION_FILE" + zstat -H CHEZMOI_FILE_STAT "${CHEZMOI_PATH}" - if [ "$COMPLETION_FILE_CTIME" -ge "$CHEZMOI_FILE_CTIME" ]; then + if [ "${COMPLETION_FILE_STAT[ctime]}" -ge "${CHEZMOI_FILE_STAT[ctime]}" ]; then exit 0 fi fi @@ -22,8 +22,10 @@ ( set -euo pipefail + zstat -H LAST_PULL_STAT "$(chezmoi git rev-parse -- --show-toplevel)/.git/FETCH_HEAD" + # has the chezmoi repo been pulled in the last 24 hours? - if [ "$(date +%s -r "$(chezmoi git rev-parse -- --show-toplevel)/.git/FETCH_HEAD")" -gt $((EPOCHSECONDS-86400)) ]; then + if [ "${LAST_PULL_STAT[ctime]}" -gt $((EPOCHSECONDS-86400)) ]; then exit 0 fi