# HG changeset patch # User Christophe de Vienne <christophe@cdevienne.info> # Date 1740050108 -3600 # Thu Feb 20 12:15:08 2025 +0100 # Node ID 81a893c247dff28bf4582e0afcd6ddd414727f6f # Parent 17d9acf1dbd29a5be521ecb335d05347392c6ddf generate-config: defaults to 'stdout' diff --git a/cmd/rednerd/cmd/configfile.go b/cmd/rednerd/cmd/configfile.go --- a/cmd/rednerd/cmd/configfile.go +++ b/cmd/rednerd/cmd/configfile.go @@ -2,13 +2,15 @@ import ( "fmt" + "io" + "os" flags "github.com/orus-io/go-flags" ) // ConfigWrite is a command that generates a configuration file. type ConfigWrite struct { - Output string `short:"o" long:"output" default:"config.ini" no-ini:"t" description:"output file"` + Output string `short:"o" long:"output" default:"-" no-ini:"t" description:"output file"` parser *flags.Parser } @@ -22,7 +24,22 @@ func (c *ConfigWrite) Execute([]string) error { fp := flags.NewIniParser(c.parser) - return fp.WriteFile(c.Output, flags.IniIncludeDefaults|flags.IniCommentDefaults|flags.IniDefault) + var output io.Writer + if c.Output == "-" { + output = os.Stdout + } else { + f, err := os.Create(c.Output) + if err != nil { + return err + } + defer f.Close() + + output = f + } + + fp.Write(output, flags.IniIncludeDefaults|flags.IniCommentDefaults|flags.IniDefault) + + return nil } func parseFile(parser *flags.Parser) func(string) error {