ConfigKit example
This example adds configuration inspection and a custom greet command to a
small application. It uses local fixtures and in-memory defaults, with no
external services. See module selection
for dependencies and Go requirements. Use Go 1.27.0 on PATH for this checkout.
From the repository root:
cd integrations/ckconfig/examples/simple
export GOWORK=off GOTOOLCHAIN=local
go run . config show
The output includes the default greeting, Hello, and schema version 2.
This example can run against its declared released dependencies with the
workspace disabled.
Inspect and override a value
# Discover configuration paths under schema.
go run . config explain --list --under /schema
# Change the greeting for this invocation and show just that value.
go run . config show --path /greeting --set '/greeting="Hi"'
The second command prints Hi. It does not edit a file.
Compare configurations
go run . config diff --config fixtures/before.yml --against-config fixtures/after.yml
The report includes changes.greeting: Goodbye.
# Expected status 3: the overridden greeting differs from the ordinary default.
go run . config diff --set '/greeting="Hi"' --details --check
This compares the overridden left side with ordinary configuration on the
right. go run prints exit status 3 and itself exits with status 1; a built
executable returns the application's status 3 directly.
Inspect warnings and failed loads
# Schema version 1 produces a warning, visible in verbose mode.
go run . config show --config fixtures/before.yml --verbose
# Quiet mode hides the configuration report and warning.
go run . config show --config fixtures/before.yml --quiet
Ordinary mode hides the warning but still displays configuration.
# Intentional failure: show detailed validation findings for the invalid fixture.
go run . config validate --config fixtures/invalid.yml --details --severity error
# Intentional failure: still show the source recorded before loading failed.
go run . config sources --config fixtures/invalid.yml --source-id source-1
Both commands retain the load failure. source-1 belongs to this fixture's
load; other configurations can have different source IDs. See the
CLI reference for report and status rules.
Try a custom command
go run . greet
go run . greet --count=0 --tag=first --tag second
The handler reports its greeting, count, and tags. It distinguishes an omitted count from an explicitly supplied zero and preserves repeated tag order.
How it is wired
One ConfigKit scope supplies the standard config commands. Without --config,
its loader uses an in-memory default. Supplied configuration and overlay values
are passed to ConfigKit unchanged. The scope enables temporary overrides and
passes them into its ordinary ConfigKit load. The
consumer guide explains
loader and scope setup.
Run GOWORK=off GOTOOLCHAIN=local go test ./... from this example directory to
check it against its declared dependencies.