From 707639f4d954d93dfc22fde945b8392f92bda77d Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Thu, 12 Nov 2020 17:25:27 -0300 Subject: [PATCH] fix: improve completions (#1894) Signed-off-by: Carlos Alexandro Becker --- cmd/build.go | 1 + cmd/check.go | 1 + cmd/completion.go | 42 +++++++++++++++++++++++++++++++++++++----- cmd/init.go | 1 + cmd/release.go | 1 + cmd/root.go | 1 + 6 files changed, 42 insertions(+), 5 deletions(-) diff --git a/cmd/build.go b/cmd/build.go index 2bccb2203fd..79a5dde49ac 100644 --- a/cmd/build.go +++ b/cmd/build.go @@ -37,6 +37,7 @@ func newBuildCmd() *buildCmd { Short: "Builds the current project", SilenceUsage: true, SilenceErrors: true, + Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { start := time.Now() diff --git a/cmd/check.go b/cmd/check.go index ff5405856e6..b4afef9d14e 100644 --- a/cmd/check.go +++ b/cmd/check.go @@ -25,6 +25,7 @@ func newCheckCmd() *checkCmd { Short: "Checks if configuration is valid", SilenceUsage: true, SilenceErrors: true, + Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { cfg, err := loadConfig(root.config) if err != nil { diff --git a/cmd/completion.go b/cmd/completion.go index 38383039db9..d9a63ce8994 100644 --- a/cmd/completion.go +++ b/cmd/completion.go @@ -9,11 +9,43 @@ type completionCmd struct { func newCompletionCmd() *completionCmd { var root = &completionCmd{} var cmd = &cobra.Command{ - Use: "completion", - Short: "Print shell autocompletion scripts for goreleaser", - SilenceUsage: true, - ValidArgs: []string{"bash", "zsh", "fish"}, - Args: cobra.ExactValidArgs(1), + Use: "completion [bash|zsh|fish]", + Short: "Print shell autocompletion scripts for goreleaser", + Long: `To load completions: + +Bash: + +$ source <(goreleaser completion bash) + +# To load completions for each session, execute once: +Linux: + $ goreleaser completion bash > /etc/bash_completion.d/goreleaser +MacOS: + $ goreleaser completion bash > /usr/local/etc/bash_completion.d/goreleaser + +Zsh: + +# If shell completion is not already enabled in your environment you will need +# to enable it. You can execute the following once: + +$ echo "autoload -U compinit; compinit" >> ~/.zshrc + +# To load completions for each session, execute once: +$ goreleaser completion zsh > "${fpath[1]}/_goreleaser" + +# You will need to start a new shell for this setup to take effect. + +Fish: + +$ goreleaser completion fish | source + +# To load completions for each session, execute once: +$ goreleaser completion fish > ~/.config/fish/completions/goreleaser.fish +`, + SilenceUsage: true, + DisableFlagsInUseLine: true, + ValidArgs: []string{"bash", "zsh", "fish"}, + Args: cobra.ExactValidArgs(1), RunE: func(cmd *cobra.Command, args []string) error { var err error switch args[0] { diff --git a/cmd/init.go b/cmd/init.go index a0ad076892f..333bec4c94b 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -22,6 +22,7 @@ func newInitCmd() *initCmd { Short: "Generates a .goreleaser.yml file", SilenceUsage: true, SilenceErrors: true, + Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { f, err := os.OpenFile(root.config, os.O_WRONLY|os.O_CREATE|os.O_TRUNC|os.O_EXCL, 0644) if err != nil { diff --git a/cmd/release.go b/cmd/release.go index fbb42194722..5f2641bba33 100644 --- a/cmd/release.go +++ b/cmd/release.go @@ -41,6 +41,7 @@ func newReleaseCmd() *releaseCmd { Short: "Releases the current project", SilenceUsage: true, SilenceErrors: true, + Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { start := time.Now() diff --git a/cmd/root.go b/cmd/root.go index eba9935c9fe..42a2c0c2a44 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -62,6 +62,7 @@ func newRootCmd(version string, exit func(int)) *rootCmd { Version: version, SilenceUsage: true, SilenceErrors: true, + Args: cobra.NoArgs, PersistentPreRun: func(cmd *cobra.Command, args []string) { if root.debug { log.SetLevel(log.DebugLevel)