9f77cb29d7557ec6ce453a7372b053931a7d034d

Author
Marco Franssen <marco.franssen@gmail.com>
Committer
Carlo Sala <carlosalag@protonmail.com>
Date

Message

feat(sigstore): add completion plugin

Closes #10862

Signed-off-by: Marco Franssen <marco.franssen@gmail.com>
Co-authored-by: Carlo Sala <carlosalag@protonmail.com>

Diff

 1diff --git a/plugins/sigstore/README.md b/plugins/sigstore/README.md
 2new file mode 100644
 3index 0000000000000000000000000000000000000000..00e83c8c246df1eedb935685571621ae8cb4a428
 4--- /dev/null
 5+++ b/plugins/sigstore/README.md
 6@@ -0,0 +1,13 @@
 7+# Sigstore plugin
 8+
 9+This plugin sets up completion for the following [Sigstore](https://sigstore.dev/) CLI tools.
10+
11+- [Cosign](https://docs.sigstore.dev/cosign/overview)
12+- [Sget](https://docs.sigstore.dev/cosign/installation#alpine-linux)
13+- [Rekor](https://docs.sigstore.dev/rekor/overview)
14+
15+To use it, add `sigstore` to the plugins array in your zshrc file:
16+
17+```zsh
18+plugins=(... sigstore)
19+```
20diff --git a/plugins/sigstore/sigstore.plugin.zsh b/plugins/sigstore/sigstore.plugin.zsh
21new file mode 100644
22index 0000000000000000000000000000000000000000..1f9d77c11e2cada1142d1d1f776e0a963d709576
23--- /dev/null
24+++ b/plugins/sigstore/sigstore.plugin.zsh
25@@ -0,0 +1,22 @@
26+function install_autocompletion {
27+  if (( ! $+commands[$1] )); then
28+    return
29+  fi
30+
31+  # If the completion file doesn't exist yet, we need to autoload it and
32+  # bind it to `$1` (cosign, sget, rekor-cli). Otherwise, compinit will
33+  # have already done that
34+  if [[ ! -f "$ZSH_CACHE_DIR/completions/_$1" ]]; then
35+    autoload -Uz _$1
36+    typeset -g -A _comps
37+    _comps[$1]=_$1
38+  fi
39+
40+  $1 completion zsh >| "$ZSH_CACHE_DIR/completions/_$1" &|
41+}
42+
43+install_autocompletion cosign
44+install_autocompletion sget
45+install_autocompletion rekor-cli
46+
47+unfunction install_autocompletion