diff options
Diffstat (limited to 'plugins/gh')
-rw-r--r-- | plugins/gh/README.md | 23 | ||||
-rw-r--r-- | plugins/gh/gh.plugin.zsh | 24 |
2 files changed, 47 insertions, 0 deletions
diff --git a/plugins/gh/README.md b/plugins/gh/README.md new file mode 100644 index 000000000..54e046a1c --- /dev/null +++ b/plugins/gh/README.md @@ -0,0 +1,23 @@ +# GitHub CLI plugin + +This plugin adds completion for the [GitHub CLI](https://cli.github.com/). + +To use it, add `gh` to the plugins array in your zshrc file: + +```zsh +plugins=(... gh) +``` + +This plugin does not add any aliases. + +## Cache + +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. diff --git a/plugins/gh/gh.plugin.zsh b/plugins/gh/gh.plugin.zsh new file mode 100644 index 000000000..3e4cdee5e --- /dev/null +++ b/plugins/gh/gh.plugin.zsh @@ -0,0 +1,24 @@ +# Autocompletion for the GitHub CLI (gh). +if (( $+commands[gh] )); then + # remove old generated completion file + command rm -f "${0:A:h}/_gh" + + ver="$(gh --version)" + ver_file="$ZSH_CACHE_DIR/gh_version" + comp_file="$ZSH_CACHE_DIR/completions/_gh" + + mkdir -p "${comp_file:h}" + (( ${fpath[(Ie)${comp_file:h}]} )) || fpath=("${comp_file:h}" $fpath) + + if [[ ! -f "$comp_file" || ! -f "$ver_file" || "$ver" != "$(< "$ver_file")" ]]; then + gh completion --shell zsh >| "$comp_file" + echo "$ver" >| "$ver_file" + fi + + declare -A _comps + autoload -Uz _gh + _comps[gh]=_gh + + unset ver ver_file comp_file +fi + |