UNPKG

921 BJavaScriptView Raw
1#!/usr/bin/env node
2import fs from 'node:fs'
3import path from 'node:path'
4import readline from 'node:readline'
5import { flatten } from './index.js'
6
7const filepath = process.argv.slice(2)[0]
8if (filepath) {
9 // Read from file
10 const file = path.resolve(process.cwd(), filepath)
11 fs.accessSync(file, fs.constants.R_OK) // allow to throw if not readable
12 out(JSON.parse(fs.readFileSync(file)))
13} else if (process.stdin.isTTY) {
14 usage(0)
15} else {
16 // Read from newline-delimited STDIN
17 const lines = []
18 readline.createInterface({
19 input: process.stdin,
20 output: process.stdout,
21 terminal: false
22 })
23 .on('line', line => lines.push(line))
24 .on('close', () => out(JSON.parse(lines.join('\n'))))
25}
26
27function out (data) {
28 process.stdout.write(JSON.stringify(flatten(data), null, 2))
29}
30
31function usage (code) {
32 console.log(`
33Usage:
34
35flat foo.json
36cat foo.json | flat
37`)
38
39 process.exit(code || 0)
40}