Skip to content
main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.

Installation

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


Requirements

  • A relatively recent version of PHP should be installed.
  • Read access to the files in question

Development

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 Docker container.

Author

Douglas Muth douglas_muth@cable.comcast.com

Bugs can be filed here or emailed directly to me.

About

Compare an arbitrary number of .ini files based on logical sections and key/value pairs.

Resources

License

Packages

No packages published