43 lines
1.9 KiB
Markdown
43 lines
1.9 KiB
Markdown
# ConfigKit
|
|
|
|
An opinionated Go library for applications that use YAML configuration files.
|
|
|
|
Linux is release-validated; macOS support is best-effort. See the
|
|
[platform support policy](docs/policy/release.md#platform-support) for details.
|
|
|
|
ConfigKit's initial loader accepts one strict YAML
|
|
source (or explicit defaults-only input), optionally traverses explicit path and glob
|
|
imports, strictly composes their disjoint definitions, applies typed defaults, and
|
|
can overlay one selected fixed overlay and check an application schema version. It
|
|
returns detached metadata and safe diagnostics.
|
|
Applications may perform audited defaulting and normalization through a resolver,
|
|
then report domain errors and warnings through read-only semantic validation. Secret
|
|
tags and a path predicate drive deterministic redacted effective YAML. Typed secret
|
|
references resolve environment names before validation, and explicit
|
|
secrets-directory bootstrap is available as a separate startup operation. Explicit
|
|
CLI override records apply above overlays. Value explanation is available through
|
|
detached structured records and deterministic redacted output.
|
|
|
|
```go
|
|
type Config struct {
|
|
Enabled bool `yaml:"enabled"`
|
|
Workers int `yaml:"workers"`
|
|
}
|
|
|
|
func ReadConfig(path string) (Config, error) {
|
|
result, err := configkit.Load[Config](configkit.File(path))
|
|
if err != nil {
|
|
return Config{}, err
|
|
}
|
|
return result.Config, nil
|
|
}
|
|
```
|
|
|
|
The [configuration contract](docs/config.md) describes implemented behavior. The
|
|
[consumer adoption guide](docs/consumers/README.md) provides maintained Narratio-,
|
|
Notarius-, WeatherReporter-, and Seriatim-shaped examples and migration guidance.
|
|
The [deferred scope](docs/roadmap/deferred.md) records deliberate exclusions. See the
|
|
[development guide](docs/development.md) for repository orientation and the
|
|
[release procedure](docs/release.md) for maintainer-only candidate and publication
|
|
steps.
|