prettyjsontable
Version:
print json files as pretty table
47 lines (43 loc) • 2.7 kB
JavaScript
#!/usr/bin/env node
import { readFileSync } from 'node:fs';
import { prettyjsongraph, prettyjsontable } from './prettyjsontable.js';
import { Command, Option } from 'commander';
const program = new Command();
program
.name('prettyjsontable')
.configureHelp({
optionDescription: option => option.description
})
.description('CLI to format json arrays and jsonstreams as table')
.addOption(new Option('-b, --boolean <color>', 'highlight booleans').default('#2222FF').env('PRETTYJSONTABLE_BOOLEAN'))
.addOption(new Option('-f, --false <color>', 'highlight false boolean').default('#FF3333').env('PRETTYJSONTABLE_FALSE'))
.addOption(new Option('-z, --negative <color>', 'highlight negative numbers').default('#FF2222').env('PRETTYJSONTABLE_NEGATIVE'))
.addOption(new Option('-n, --number <color>', 'highlight numbers').default('').env('PRETTYJSONTABLE_NUMBER'))
.addOption(new Option('-e, --even <color>', 'even line background').default('#111111').env('PRETTYJSONTABLE_EVEN'))
.addOption(new Option('-o, --odd <color>', 'odd line background').default('#222222').env('PRETTYJSONTABLE_ODD'))
.addOption(new Option('--header <color>', 'header line background').default('#AA2222').env('PRETTYJSONTABLE_HEADER'))
.addOption(new Option('-u, --unixtime <color>', 'highlight and convert unix timestamps').default('#2222FF').env('PRETTYJSONTABLE_UNIXTIME'))
.addOption(new Option('-v, --msunixtime <color>', 'highlight and convert unix timestamps in ms').default('#22FF22').env('PRETTYJSONTABLE_MSUNIXTIME'))
.addOption(new Option('--unixstart <date>', 'convert numbers after <date> to Date').default('2013-01-01').env('PRETTYJSONTABLE_UNIXSTART'))
.addOption(new Option('--unixend <date>', 'convert numbers before <date> to Date').default('2030-01-01').env('PRETTYJSONTABLE_UNIXEND'))
.addOption(new Option('-c, --columns <number...>', 'display columns in the given order (i.e. 3 4 1)'))
.addOption(new Option('-g, --graph', 'plot graph for numeric values').default(false).env('PRETTYJSONTABLE_GRAPH'))
.addHelpText('after', `
ENVIRONMENT:
You can also set an option via the variable PRETTYJSONTABLE_optionname.
i.e. PRETTYJSONTABLE_EVEN for the even option.
Disable single color:
Set option to "".
To disable number to date conversion set -u and -v to "".
Example calls:
$ cat test.json | prettyjsontable -n 3 2 1 -u "" -n "#AAAA22"
$ cat test.json | jq .[] | jt`);
program.parse();
const options = program.opts();
const data = readFileSync('/dev/stdin', 'utf-8');
if (options.graph !== false) {
console.log(prettyjsongraph(data, options));
}
else {
console.log(prettyjsontable(data, options));
}