From d36fd5b3ee6989203de2a29b1de67521fd1c8ea5 Mon Sep 17 00:00:00 2001 From: Ben Mezger Date: Tue, 2 Feb 2021 20:03:31 -0300 Subject: [PATCH] Refactor: Write to stdout by default --- commands/genautocomplete.go | 28 +++++++++++++------ .../en/commands/hugo_gen_autocomplete.md | 10 +++---- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/commands/genautocomplete.go b/commands/genautocomplete.go index 044a052e6..3f3bf9c87 100644 --- a/commands/genautocomplete.go +++ b/commands/genautocomplete.go @@ -14,6 +14,9 @@ package commands import ( + "io" + "os" + "github.com/spf13/cobra" jww "github.com/spf13/jwalterweatherman" ) @@ -53,13 +56,21 @@ or just source them in directly: RunE: func(cmd *cobra.Command, args []string) error { var err error + var target io.Writer + + if cc.autocompleteTarget == "" { + target = os.Stdout + } else { + target, _ = os.OpenFile(cc.autocompleteTarget, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + } + switch cc.autocompleteType { case "zsh": - err = cmd.Root().GenZshCompletionFile(cc.autocompleteTarget) + err = cmd.Root().GenZshCompletion(target) case "bash": - err = cmd.Root().GenBashCompletionFile(cc.autocompleteTarget) + err = cmd.Root().GenBashCompletion(target) case "fish": - err = cmd.Root().GenFishCompletionFile(cc.autocompleteTarget, true) + err = cmd.Root().GenFishCompletion(target, true) default: return newUserError("Unsupported completion type") } @@ -68,16 +79,15 @@ or just source them in directly: return err } - jww.FEEDBACK.Println(cc.autocompleteType+" completion file for Hugo saved to", cc.autocompleteTarget) + if cc.autocompleteTarget != "" { + jww.FEEDBACK.Println(cc.autocompleteType+" completion file for Hugo saved to", cc.autocompleteTarget) + } return nil }, }) - cc.cmd.PersistentFlags().StringVarP(&cc.autocompleteTarget, "completionfile", "", "/etc/bash_completion.d/hugo.sh", "autocompletion file") - cc.cmd.PersistentFlags().StringVarP(&cc.autocompleteType, "type", "", "bash", "autocompletion type (zsh, bash, fish or powershell)") - - // For bash-completion - cc.cmd.PersistentFlags().SetAnnotation("completionfile", cobra.BashCompFilenameExt, []string{}) + cc.cmd.PersistentFlags().StringVarP(&cc.autocompleteTarget, "completionfile", "f", "", "autocompletion file, defaults to stdout") + cc.cmd.PersistentFlags().StringVarP(&cc.autocompleteType, "type", "t", "bash", "autocompletion type (zsh, bash or fish)") return cc } diff --git a/docs/content/en/commands/hugo_gen_autocomplete.md b/docs/content/en/commands/hugo_gen_autocomplete.md index 033e4fa82..9fbfac955 100644 --- a/docs/content/en/commands/hugo_gen_autocomplete.md +++ b/docs/content/en/commands/hugo_gen_autocomplete.md @@ -12,10 +12,10 @@ Generate shell autocompletion script for Hugo Generates a shell autocompletion script for Hugo. -By default, the file is written directly to /etc/bash_completion.d +By default, the file is written directly to `stdout` for convenience, and the command may need superuser rights, e.g.: - $ sudo hugo gen autocomplete + $ sudo hugo gen autocomplete Add `--completionfile=/path/to/file` flag to set alternative file-path and name. @@ -26,7 +26,7 @@ shell type. Logout and in again to reload the completion scripts, or just source them in directly: - $ . /etc/bash_completion or /path/to/file + $ . /path/to/file ``` hugo gen autocomplete [flags] @@ -35,7 +35,7 @@ hugo gen autocomplete [flags] ### Options ``` - --completionfile string autocompletion file (default "/etc/bash_completion.d/hugo.sh") + --completionfile string autocompletion file (defaults to stdout) -h, --help help for autocomplete --type string autocompletion type (zsh, bash or fish) (default "bash") ``` @@ -60,6 +60,6 @@ hugo gen autocomplete [flags] ### SEE ALSO -* [hugo gen](/commands/hugo_gen/) - A collection of several useful generators. +- [hugo gen](/commands/hugo_gen/) - A collection of several useful generators. ###### Auto generated by spf13/cobra on 6-Jan-2021