Command line interface for Jora (a JSON query language)
npm i -g jora-cli
> jora -h
Usage:
jora [query] [options]
Options:
--no-color Suppress color output
--dry-run Don't output result, only report what it would have done
-e, --encoding <encoding> Output encoding: json (default), jsonxl (snapshot9)
-f, --force Force overwriting output file
-h, --help Output usage information
-i, --input <filename> Input file
-o, --output <filename> Output file (outputs to stdout if not set)
-p, --pretty [indent] Pretty print with optionally specified indentation (4 spaces by default)
-q, --query <query> Jora query
--verbose Output debug info about actions
-v, --version Output version
-
Get a single field from, e.g. "version":
jora version <package.json
-
Get all top level dependencies count:
jora -i package.json -q '(dependencies.keys() + devDependencies.keys()).size()'
-
Find packages with more than a single version (run query from a file)
npm ls --json | jora find-multi-version-packages.jora
The content of
find-multi-version-packages.jora
may be as follows:..(dependencies.entries().({ name: key, ...value })) .group(=>name, =>version) .({ name: key, versions: value }) .[versions.size() > 1]
-
jora-cli
supports queries from JSONXl, and conversion between JSON and JSONXL. JSONXL is a binary replacement for JSON. It is supported by any app built on Discovery.js, including JsonDiscovery, CPUpro and Statoscope. JSONXL not only saves space and transfer time but also offers faster decoding and a lower memory footprint, which is beneficial for processing large datasets.- Queries for JSONXL input work the same ways as for JSON:
jora <input.jsonxl "select.something"
- Convert JSON into JSONXL:
jora <input.json >output.jsonxl -e jsonxl
- Convert JSONXL into JSON
jora <input.jsonxl >output.json
- Queries for JSONXL input work the same ways as for JSON:
jora-cli
takes a valid JSON and produce a valid JSON as a result. However, jora
language could produce some values that incompatable with JSON, such values are transforming:
NaN
,Infinity
and-Infinity
are converting tonull
, that's a behaviour ofJSON.stringify()
undefined
- is convering to
null
when a result of query (top level) or an element of an array - object entries with
undefined
as a value are eliminating
- is convering to
MIT