Newer
Older
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)