You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					40 lines
				
				797 B
			
		
		
			
		
	
	
					40 lines
				
				797 B
			| 
											3 years ago
										 | #!/usr/bin/env node
 | ||
|  | 
 | ||
|  | const flat = require('.') | ||
|  | const fs = require('fs') | ||
|  | const path = require('path') | ||
|  | const readline = require('readline') | ||
|  | 
 | ||
|  | if (process.stdin.isTTY) { | ||
|  |   // Read from file
 | ||
|  |   const file = path.resolve(process.cwd(), process.argv.slice(2)[0]) | ||
|  |   if (!file) usage() | ||
|  |   if (!fs.existsSync(file)) usage() | ||
|  |   out(require(file)) | ||
|  | } else { | ||
|  |   // Read from newline-delimited STDIN
 | ||
|  |   const lines = [] | ||
|  |   readline.createInterface({ | ||
|  |     input: process.stdin, | ||
|  |     output: process.stdout, | ||
|  |     terminal: false | ||
|  |   }) | ||
|  |     .on('line', line => lines.push(line)) | ||
|  |     .on('close', () => out(JSON.parse(lines.join('\n')))) | ||
|  | } | ||
|  | 
 | ||
|  | function out (data) { | ||
|  |   process.stdout.write(JSON.stringify(flat(data), null, 2)) | ||
|  | } | ||
|  | 
 | ||
|  | function usage () { | ||
|  |   console.log(`
 | ||
|  | Usage: | ||
|  | 
 | ||
|  | flat foo.json | ||
|  | cat foo.json | flat | ||
|  | `)
 | ||
|  | 
 | ||
|  |   process.exit() | ||
|  | } |