Configuration
Configuration is based on Kratos Config and data format is defined as Protobuf
VFS Integration
import(
...
kitconf "github.com/go-saas/kit/pkg/conf"
)
flag.Parse()
source := []config.Source{
env.NewSource("KRATOS_"),
}
if flagconf == nil {
flagconf = append(flagconf, "./configs")
}
for _, s := range flagconf {
v := vfs.New()
//mount filter config files
v.Mount("/", afero.NewRegexpFs(afero.NewBasePathFs(afero.NewOsFs(), strings.TrimSpace(s)), regexp.MustCompile(`\.(json|proto|xml|yaml)$`)))
//vfs as configuration source
source = append(source, kitconf.NewVfs(v, "/"))
}
c := config.New(
config.WithSource(
source...,
),
)
defer c.Close()
if err := c.Load(); err != nil {
panic(err)
}
Common Configuration
- data:
- endpoints:
- databases: database dsn
- events: distributed eventbus
- redis: distributed key-value database
- email: email sender
- sms: sms sender
- vfs: virtual file system mount paths
- endpoints:
- security:
- services:
- logging: logging
- tracing: tracing
- app: application config
- dev: development config
- stripe: stripe config
Modules Configuration
Refer to modules