Skip to content
Snippets Groups Projects
generate-config.go 939 B
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)
Axel Prel's avatar
Axel Prel committed