Skip to content
Snippets Groups Projects
cmd.gotmpl 3.12 KiB
// Code generated by go-swagger/go-orusapi; DO NOT EDIT.

package cmd

import (
	"github.com/orus-io/go-flags"
	"orus.io/orus-io/go-orusapi"
	"orus.io/orus-io/go-orusapi/database"
)

var (
    Version string
)

type ConfigFile struct {
	ConfigFile string `long:"config" short:"c" env:"CONFIG" no-ini:"t" description:"A configuration file"`
}

type Info struct {
    Environment string `long:"environment" env:"ENVIRONMENT" ini-name:"environment" default:"default" description:"A environment name, used in sentry and prometheus"`
}

var (
	Logger = orusapi.DefaultLogger(os.Stdout)
	LoggingOptions  = orusapi.MustLoggingOptions(orusapi.NewLoggingOptions(&Logger, os.Stdout))
	DatabaseOptions = &database.Options{}
	ConfigFileOption = &ConfigFile{}
    InfoOptions = &Info{}

	SentryOptions = orusapi.NewSentryOptions(LoggingOptions)

	parser = flags.NewNamedParser("{{ dasherize (pascalize .Name) }}", flags.HelpFlag|flags.PassDoubleDash)
	bootstrapParser = flags.NewNamedParser("{{ dasherize (pascalize .Name) }}", flags.IgnoreUnknown)
)

func Run() int {
	if _, err := bootstrapParser.Parse(); err != nil {
		Logger.Err(err).Msg("")
		return 1
	}

	if ConfigFileOption.ConfigFile != "" {
		Logger.Debug().Str("configfile", ConfigFileOption.ConfigFile).Msg("parsing configuration file")
		iniParser := flags.NewIniParser(parser)
		if err := iniParser.ParseFile(ConfigFileOption.ConfigFile); err != nil {
			Logger.Err(err).Msg("")
			return 1
		}
	}

	if _, err := parser.Parse(); err != nil {
		code := 1
		if fe, ok := err.(*flags.Error); ok {
			if fe.Type == flags.ErrHelp {
				code = 0
				// this error actually contains a help message for the user
				// so we print it on the console
				fmt.Println(err)
			} else {
				Logger.Error().Msg(err.Error())
			}
		} else {
			Logger.Err(err).Msg("")
		}
		return code
	}
	return 0
}

func init() {
	parser.NamespaceDelimiter = "-"
	parser.EnvNamespaceDelimiter = "_"
	parser.EnvNamespace = "CARNET"
	if _, err := parser.AddGroup("Configuration", "Configuration file", ConfigFileOption); err != nil {
		panic(err)
	}
    g, err := parser.AddGroup("Info", "Info options", InfoOptions)
    if err != nil {
        panic(err)
    }

	g, err = parser.AddGroup("Logging", "Logging options", LoggingOptions)
	if err != nil {
		panic(err)
	}
	g.Namespace="log"
	g.EnvNamespace="LOG"

	g, err = parser.AddGroup("Database", "Database options", DatabaseOptions)
	if err != nil {
		panic(err)
	}
	g.Namespace="db"
	g.EnvNamespace="DB"

	g, err = parser.AddGroup("Sentry", "Sentry options", SentryOptions)
	if err != nil {
		panic(err)
	}
	g.Namespace="sentry"
	g.EnvNamespace="SENTRY"

	if _, err := parser.AddCommand("generate-config", "Generate a configuration file", "", orusapi.NewGenerateConfigCmd(parser)); err != nil {
		panic(err)
	}

	bootstrapParser.NamespaceDelimiter = "-"
	bootstrapParser.EnvNamespaceDelimiter = "_"
	bootstrapParser.EnvNamespace = "CARNET"
	if _, err := bootstrapParser.AddGroup("Configuration", "Configuration file", ConfigFileOption); err != nil {
		panic(err)
	}
	g, err = bootstrapParser.AddGroup("Logging", "Logging options", LoggingOptions)
	if err != nil {
		panic(err)
	}
	g.Namespace="log"
	g.EnvNamespace="LOG"

}