node package manager
Stop writing boring code. Discover, share, and reuse within your team. Create a free org »

props-command

props-command

Command-line tool to manipulate Java properties files

NPM version Build Status Coverage Status Dependency Status devDependency Status peerDependency Status

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.