package orusapi import ( "io" "os" flags "github.com/orus-io/go-flags" ) // GenerateConfigCmd is a command that generates a configuration file. type GenerateConfigCmd struct { Output string `short:"o" long:"output" default:"-" no-ini:"t" description:"output file"` parser *flags.Parser } // NewGenerateConfigCmd creates a GenerateConfigCmd. func NewGenerateConfigCmd(parser *flags.Parser) *GenerateConfigCmd { return &GenerateConfigCmd{parser: parser} } // Execute write out a configuration file. func (c *GenerateConfigCmd) Execute([]string) (errResult error) { var out io.Writer if c.Output == "-" { out = os.Stdout } else { f, err := os.OpenFile(c.Output, os.O_RDWR|os.O_CREATE, 0o755) if err != nil { return err } defer func() { errResult = f.Close() }() out = f } fp := flags.NewIniParser(c.parser) fp.Write(out, flags.IniIncludeDefaults|flags.IniCommentDefaults|flags.IniDefault) return nil }