package config import ( "os" "strings" "git.sr.ht/~cco/go-scopes/common" ) type Cfg struct { *Base ConfigFormat string } func Start(ctx common.Context) { } // definitions type Base struct { name string starter common.StartFct children []common.Config } func (cfg *Base) Name() string { return cfg.name } func (cfg *Base) Starter() common.StartFct { return cfg.starter } func (cfg *Base) Children() []common.Config { return cfg.children } func (cfg *Base) Add(child common.Config) { cfg.children = append(cfg.children, child) } func MakeBase(name string, starter common.StartFct) *Base { return &Base{ name: name, starter: starter, } } // overridable settings type Settings map[string]string func (s Settings) Use(value, key string) string { if v, ok := os.LookupEnv("SCOPES_" + strings.ToUpper(key)); ok { return v } if v, ok := s[key]; ok { return v } return value }