package commands
 
 import (
+       "io"
+       "os"
+
        "github.com/spf13/cobra"
        jww "github.com/spf13/jwalterweatherman"
 )
 
                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")
                        }
                                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
 }
 
 
 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.
 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]
 ### 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")
 ```
 
 ### 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