Command-line tool to manipulate Java properties files


License
ISC
Install
npm install props-command@0.12.0

Documentation

props-command

Command-line tool to manipulate Java properties files

NPM version Build Status Coverage Status Dependency Status devDependency Status Codacy Badge

NPM

Installation

npm install -g props-command

Usage

Synopsis

$ props <command> <command-args> [<global-options>]

Command List

  • merge: Merge a properties file into an other properties file.
  • sort: Sort by keys.
  • format: Alias for sort command.
  • subset: Select a subset of properties according to a pattern for keys.
  • from-xlsx: Extract properties file from an XLSX (Excel) file.

Global options

  • --no-backup: There will no more backup made for overwritten files.

merge

$ props merge <from-properties-file> <into-properties-file>

Each property of <from-properties-file> is added to <into-properties-file>. For each property with same key inside the two files, the value from <from-properties-file> is used to overwrite the property in <into-properties-file>.

from-xlsx

$ props from-xlsx <from-excel-file> <excel-file-structure-description> <into-properties-file>

Each property extracted from <from-excel-file> is added to <into-properties-file>. For each property with same key inside the two files, the value from <from-excel-file> is used to overwrite the property in <into-properties-file>.
If <into-properties-file> file does not exist, it will be created.

<excel-file-structure-description> is a JSON file describing where properties keys and values are stored in the Excel file. See sample below:

{
	"sheet": "Sheet 1",
	"keyColumn": "I",
	"valueColumn": "H",
	"firstLine": 2,
	"escape": true
}

escape option specify if special characters like \ must be escaped. Default value is false.

Filter

In order to skip some lines, it's possible to define a filter, testing a particular column for a particular value.

{
	"sheet": "Sheet 1",
	"keyColumn": "I",
	"valueColumn": "H",
	"firstLine": 2,
	"escape": true,
	"filter": {
		"column": "C",
		"value": "OK"
	}
}

Multiple sheets

It's possible to extract properties from multiple sheets, using sheets field instead of sheet field.

{
	"sheets": [
		"Sheet1",
		"Sheet2"
	],	
	"keyColumn": "I",
	"valueColumn": "H",
	"firstLine": 2,
	"escape": true,
	"filter": {
		"column": "C",
		"value": "OK"
	}
}

to-json

$ props to-json <properties-file> <json-file>

Each property extracted from <properties-file> is added to <json-file>. For each property key containing some dot, a proper nested object is created. For each property with same key inside the two files, the value from <properties-file> is used to overwrite the property in <json-file>.

If <json-file> file does not exist, it will be created.