fix(gh): preserve valid completion cache on failure

This commit is contained in:
Robby Russell
2026-09-10 05:33:39 -07:00
parent eccb32c94c
commit d03d367f82
2 changed files with 11 additions and 8 deletions
+3 -6
View File
@@ -15,9 +15,6 @@ This plugin does not add any aliases.
This plugin caches the completion script and is automatically updated when the
plugin is loaded, which is usually when you start up a new terminal emulator.
The cache is stored at:
- `$ZSH/plugins/gh/_gh` completions script
- `$ZSH_CACHE_DIR/gh_version` version of GitHub CLI, used to invalidate
the cache.
The completion script is stored at `$ZSH_CACHE_DIR/completions/_gh`. If an
update fails, the plugin keeps the last successfully generated completion
script.
+8 -2
View File
@@ -13,6 +13,12 @@ fi
zmodload -F zsh/files b:zf_mv
() {
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_gh"
zf_mv -f -- =( gh completion --shell zsh ) "$TMPPREFIX"
local completion_file="$ZSH_CACHE_DIR/completions/_gh"
local completion_tmp="${completion_file}.$$.${RANDOM}"
if gh completion --shell zsh >| "$completion_tmp" && [[ -s "$completion_tmp" ]]; then
zf_mv -f -- "$completion_tmp" "$completion_file"
fi
command rm -f -- "$completion_tmp"
} &|