Browse Source

feat(sigstore): add completion plugin

Closes #10862

Signed-off-by: Marco Franssen <marco.franssen@gmail.com>
Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
Marco Franssen 2 years ago
parent
commit
9f77cb29d7
2 changed files with 35 additions and 0 deletions
  1. 13 0
      plugins/sigstore/README.md
  2. 22 0
      plugins/sigstore/sigstore.plugin.zsh

+ 13 - 0
plugins/sigstore/README.md

@@ -0,0 +1,13 @@
+# Sigstore plugin
+
+This plugin sets up completion for the following [Sigstore](https://sigstore.dev/) CLI tools.
+
+- [Cosign](https://docs.sigstore.dev/cosign/overview)
+- [Sget](https://docs.sigstore.dev/cosign/installation#alpine-linux)
+- [Rekor](https://docs.sigstore.dev/rekor/overview)
+
+To use it, add `sigstore` to the plugins array in your zshrc file:
+
+```zsh
+plugins=(... sigstore)
+```

+ 22 - 0
plugins/sigstore/sigstore.plugin.zsh

@@ -0,0 +1,22 @@
+function install_autocompletion {
+  if (( ! $+commands[$1] )); then
+    return
+  fi
+
+  # If the completion file doesn't exist yet, we need to autoload it and
+  # bind it to `$1` (cosign, sget, rekor-cli). Otherwise, compinit will
+  # have already done that
+  if [[ ! -f "$ZSH_CACHE_DIR/completions/_$1" ]]; then
+    autoload -Uz _$1
+    typeset -g -A _comps
+    _comps[$1]=_$1
+  fi
+
+  $1 completion zsh >| "$ZSH_CACHE_DIR/completions/_$1" &|
+}
+
+install_autocompletion cosign
+install_autocompletion sget
+install_autocompletion rekor-cli
+
+unfunction install_autocompletion