module

Obsctl::Config::ConfigInspector

Answers three questions about a config file that the schema alone cannot: where each effective value came from (explain), how the file departs from the defaults (diff), and what rewriting it in the current schema would change (migrate).

All three work on dotted key paths flattened from the canonical YAML serialization, so they stay correct as the schema grows without needing a hand-maintained key list.

Class methods

diff(path : String) : Array(Change)

Returns the settings where the file departs from the defaults.

A key present in only one side is still a change: default or current is null to say which side lacks it.

Source
explain(path : String) : Array(Entry)

Returns every effective setting with the source that supplied it.

Source
flatten(yaml : String) : Hash(String, String)

Flattens a YAML document into dotted key paths.

Sequences are rendered as a single inline value rather than indexed keys: aliases and shortcuts read better as one line, and an index-based key path would make reordering a list look like a settings change.

Source
migrate(path : String, dry_run : Bool = false, writer : ConfigWriter = ConfigWriter.new) : Migration

Rewrites the file in the current canonical schema.

dry_run reports what would change without touching the file. Keys the current schema does not recognize are dropped, which is the point of the command: it is how a config written for an older obsctl stops carrying settings that no longer do anything.

Source

Nested types