Skip to content

Latest commit

 

History

History
127 lines (96 loc) · 2.26 KB

File metadata and controls

127 lines (96 loc) · 2.26 KB

Quick Reference Guide

Installation

go install github.com/BaseMax/go-config-diff/cmd/go-config-diff@latest

Basic Commands

# Compare two config files
go-config-diff config1.yaml config2.yaml

# Use different output format
go-config-diff -format=json config1.json config2.json
go-config-diff -format=plain config1.toml config2.toml

# Show summary of changes
go-config-diff -summary config1.ini config2.ini

# Show version
go-config-diff -version

# Show help
go-config-diff -help

Output Symbols

  • + Green: Added field or value
  • - Red: Removed field or value
  • ~ Yellow: Modified field or value

Exit Codes

  • 0: No differences found
  • 1: Differences found or error occurred

Supported Formats

  • YAML (.yaml, .yml)
  • JSON (.json)
  • TOML (.toml)
  • INI (.ini, .conf)

Use Cases

CI/CD Pipeline

# Exit with error if configs differ
go-config-diff prod-config.yaml staging-config.yaml

Generate Machine-Readable Report

# Output JSON for further processing
go-config-diff -format=json old.json new.json > diff-report.json

Quick Visual Check

# Colored output with summary
go-config-diff -summary app-v1.yaml app-v2.yaml

Features

✅ Semantic comparison (not line-by-line)
✅ Ignores key ordering in objects/maps
✅ Deep nested structure comparison
✅ Type-aware comparison
✅ Multiple output formats
✅ Colored terminal output
✅ Path tracking for changes
✅ Summary statistics

Common Patterns

Compare across formats

# Even different formats are compared semantically
go-config-diff config.yaml config.json

Integration with Git

# Compare config between branches
git show main:config.yaml > /tmp/old.yaml
git show feature:config.yaml > /tmp/new.yaml
go-config-diff /tmp/old.yaml /tmp/new.yaml

Automation

# Use in scripts
if go-config-diff base.yaml custom.yaml; then
    echo "Configs are identical"
else
    echo "Configs differ"
fi

Building from Source

git clone https://github.com/BaseMax/go-config-diff.git
cd go-config-diff
make build
./go-config-diff -version

Development

# Run tests
make test

# Build binary
make build

# Run with examples
make run

# Clean artifacts
make clean