ubgo is in early alpha: libraries and APIs may still change.

Skip to content
ubgo Alpha

cfgkit

Typed config from env, .env, JSON, YAML, TOML, flags and secret stores into one validated struct.

go get github.com/ubgo/cfgkit
Language
Go
Go version
1.22
Core deps
1 direct
Latest tag
v0.1.0
License
Apache-2.0
Go modules
21

How it fits together

passes cfgkittest

cfgkittest is the shared conformance suite: each one marked green has a test that runs it.

Code from the README

type Config struct {
	Port     int           `env:"PORT"      default:"8080" doc:"HTTP listen port"`
	Timeout  time.Duration `env:"TIMEOUT"   default:"15s"`
	DBURL    string        `env:"DATABASE_URL,required"    doc:"Postgres connection string"`
	APIKey   string        `env:"API_KEY"   secret:"true"  doc:"Upstream API key"`
}

cfg, res, err := cfgkit.Load[Config](
	cfgkit.WithSources(
		cfgkit.FromFiles(".env", ".env.local"),
		cfgkit.FromEnviron(),   // last = highest precedence
	),
)

From the cfgkit README.

At a glance (from the README)

ModuleAddsGuide
contrib/format-hclHCL documents and filesREADME
contrib/format-iniINI documents and files — flatREADME
contrib/format-propertiesJava .properties — flatREADME
contrib/format-tomlTOML documents and filesREADME
contrib/format-yamlYAML documents and filesREADME
contrib/flags-pflagcobra / pflag flag setsREADME
contrib/source-azurekeyvaultAzure Key Vault — no dependenciesREADME
contrib/source-consulConsul KV prefixes — no dependenciesREADME
contrib/source-etcdetcd v3 prefixes, via its HTTP gateway — no dependenciesREADME
contrib/source-gcpsecretsGoogle Secret Manager — no dependenciesREADME
contrib/source-k8sKubernetes ConfigMaps and Secrets — no dependenciesREADME
contrib/source-vaultHashiCorp Vault KV secrets — no dependenciesREADME
contrib/source-appconfigAWS AppConfig profilesREADME
contrib/source-s3a config document in an S3 objectREADME
contrib/source-secretsmanagerAWS Secrets ManagerREADME
contrib/source-ssmAWS Parameter StoreREADME
contrib/source-kilnkiln-encrypted env files — the one source whose file is safe to commitREADME
contrib/source-natsNATS JetStream key/value bucketsREADME