Merge pull request #2017 from versity/ben/shell-completion

feat: add cli option to generate shell auto completion
This commit is contained in:
Ben McClelland
2026-04-14 08:29:58 -07:00
committed by GitHub
5 changed files with 60 additions and 1 deletions

View File

@@ -121,6 +121,25 @@ nfpms:
file_info:
mode: 0700
- src: extra/versitygw.sh
dst: /etc/profile.d/versitygw.sh
packager: rpm
- src: extra/versitygw.sh
dst: /etc/bash_completion.d/versitygw.sh
packager: deb
- src: extra/versitygw.zsh
dst: /usr/share/zsh/site-functions/_versitygw
packager: rpm
- src: extra/versitygw.zsh
dst: /usr/share/zsh/vendor-completions/_versitygw
packager: deb
- src: extra/versitygw.fish
dst: /usr/share/fish/vendor_completions.d/versitygw.fish
# yaml-language-server: $schema=https://goreleaser.com/static/schema.json

View File

@@ -146,7 +146,8 @@ func main() {
func initApp() *cli.App {
return &cli.App{
Usage: "Versity S3 Gateway",
EnableBashCompletion: true,
Usage: "Versity S3 Gateway",
Description: `The Versity S3 Gateway is an S3 protocol translator that allows an S3 client
to access the supported backend storage as if it was a native S3 service.
VersityGW is an open-source project licensed under the Apache 2.0 License. The

6
extra/versitygw.fish Normal file
View File

@@ -0,0 +1,6 @@
# Fish completion for versitygw
function __versitygw_complete
set -l cmd (commandline -opc)
eval $cmd --generate-bash-completion
end
complete -f -c versitygw -a '(__versitygw_complete)'

20
extra/versitygw.sh Normal file
View File

@@ -0,0 +1,20 @@
#!/bin/bash
# Bash completion for versitygw
[ -n "$BASH_VERSION" ] || return 0
_cli_bash_autocomplete() {
if [[ "${COMP_WORDS[0]}" != "source" ]]; then
local cur opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
if [[ "$cur" == "-"* ]]; then
opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} ${cur} --generate-bash-completion )
else
opts=$( ${COMP_WORDS[@]:0:$COMP_CWORD} --generate-bash-completion )
fi
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
return 0
fi
}
complete -o bashdefault -o default -o nospace -F _cli_bash_autocomplete versitygw

13
extra/versitygw.zsh Normal file
View File

@@ -0,0 +1,13 @@
#compdef versitygw
_versitygw() {
local -a opts
local cur
cur=${words[-1]}
if [[ "$cur" == "-"* ]]; then
opts=("${(@f)$(${words[1,-2]} ${cur} --generate-bash-completion)}")
else
opts=("${(@f)$(${words[1,-2]} --generate-bash-completion)}")
fi
_describe 'versitygw' opts
}
_versitygw