Esempio n. 1
0
func (fl *flagLayer) Load() (map[string]interface{}, error) {
	if !fl.flags.Parsed() {
		fl.flags.Parse(os.Args[1:])
	}

	// The default layer has the ablity to deal with nested key. do not copy/paste code here :)
	inner := onion.NewDefaultLayer()
	inner.SetDelimiter(fl.GetDelimiter())
	for i := range fl.data {
		switch p := fl.data[i].(type) {
		case *bool:
			inner.SetDefault(i, *p)
		case *time.Duration:
			inner.SetDefault(i, *p)
		case *int64:
			inner.SetDefault(i, *p)
		case *string:
			inner.SetDefault(i, *p)
		}
	}

	return inner.Load()
}
Esempio n. 2
0
func main() {

	conf := onion.New()

	def := onion.NewDefaultLayer()
	err := def.SetDefault("port", 6998)
	panicOnErr(err)

	err = conf.AddLayer(def)
	panicOnErr(err)

	log.Printf("the port is %d (default layer)", conf.GetInt("port"))

	err = conf.AddLayer(onion.NewFileLayer(filepath.Join(pwd(), "test.json")))
	panicOnErr(err)

	log.Printf("the port is %d (file layer)", conf.GetInt("port"))

	err = conf.AddLayer(onion.NewEnvLayer("PORT"))
	panicOnErr(err)

	log.Printf("the final port is %d, Try to set PORT in env and try again", conf.GetInt("port"))
}