Implement semantic configuration file comparison utility #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Build a Go CLI tool that compares configuration files (YAML, JSON, TOML, INI) by semantic meaning rather than text diff. Handles nested structures, ignores key ordering, and outputs colored diffs or machine-readable JSON.
Architecture
pkg/ast): Normalizes all formats into a common tree representation with typed nodes (Map, Array, String, Number, Bool, Null)pkg/parser): Auto-detects and parses each format into the AST using established libraries (yaml.v3, BurntSushi/toml, ini.v1)pkg/diff): Traverses ASTs recursively, tracking paths with dot notation (e.g.,server.host[0]), classifying changes as Added/Removed/Modifiedpkg/output): Renders diffs as colored terminal output, plain text, or JSONUsage
Exit code 0 when identical, 1 when different. Order-independent map comparison ensures
{"a": 1, "b": 2}equals{"b": 2, "a": 1}.Implementation notes
interface{}converted to AST via reflection for type safetyOriginal prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.