Compare Ini Files
The problem: You have multiple copies of an "ini" file (https://en.wikipedia.org/wiki/INI_file) in use by an app (possibly an app deployed in multiple datacenters...), and you want to compare them/diff them. Or worse yet: the stanzas and key-value pairs are in different orders in each file, and sorting through them would be a manual process that takes hours and is prone to error.
Solution: This script. The syntax is simple:
compare-ini-files filename1 filename2 [filename3 [filename4 [... ] ] ]
After loading the contents of the specified files into memory, this script then checks to make sure all stanzas exist in each file, then does a key-by-key comparison on each stanza, and reports any differences between the files.
brew tap comcast/opensource https://github.com/Comcast/homebrew-opensource.git brew install compare-ini-files
Testing out the script
Clone this repo, and run
./compare-ini-files test/* on the command line.
The output should resemble this:
# # Starting config file audit of the following files: # # test/file1.conf # test/file2.conf # test/file3.conf # # # Loading files... # # # Comparing contents... # File: 'test/file3.conf' is missing the following stanzas: [this stanza is found in file 1 and 2] Stanza: [common in all files] Key: 'specific to file3' found with multiple values: Value 'somevalue' found in files: test/file3.conf These files did NOT contain the key: test/file1.conf test/file2.conf
- A relatively recent version of PHP should be installed.
- Read access to the files in question
Development can be done in Docker:
docker build -t compare-ini-files . && docker run -it -v $(pwd):/mnt compare-ini-files test/*
That command builds an image locally and runs the
compare-ini-files script inside of a
Douglas Muth firstname.lastname@example.org
Bugs can be filed here or emailed directly to me.