diff --git a/.goreleaser.yaml b/.goreleaser.yaml index b0f36b3a..5bc85da8 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -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 diff --git a/cmd/versitygw/main.go b/cmd/versitygw/main.go index 0e05ca72..8dec6490 100644 --- a/cmd/versitygw/main.go +++ b/cmd/versitygw/main.go @@ -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 diff --git a/extra/versitygw.fish b/extra/versitygw.fish new file mode 100644 index 00000000..60c9a6cf --- /dev/null +++ b/extra/versitygw.fish @@ -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)' diff --git a/extra/versitygw.sh b/extra/versitygw.sh new file mode 100644 index 00000000..fecea92f --- /dev/null +++ b/extra/versitygw.sh @@ -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 diff --git a/extra/versitygw.zsh b/extra/versitygw.zsh new file mode 100644 index 00000000..9d207470 --- /dev/null +++ b/extra/versitygw.zsh @@ -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