1 | #!/usr/bin/env node
|
2 |
|
3 |
|
4 |
|
5 | const Transform = require('stream').Transform
|
6 | const fs = require('fs')
|
7 | const http = require('http')
|
8 | const https = require('https')
|
9 | const pickup = require('./')
|
10 | const repl = require('repl')
|
11 | const url = require('url')
|
12 | const util = require('util')
|
13 |
|
14 | const ctx = repl.start({
|
15 | ignoreUndefined: true,
|
16 | input: process.stdin,
|
17 | output: process.stdout,
|
18 | prompt: 'pickup> ',
|
19 | useColors: true
|
20 | }).context
|
21 |
|
22 | ctx.file = file
|
23 | ctx.get = get
|
24 | ctx.read = read
|
25 |
|
26 | function file (path) {
|
27 | return fs.createReadStream(path).pipe(pickup({ objectMode: true }))
|
28 | }
|
29 |
|
30 | function get (uri) {
|
31 | const urlObj = url.parse(uri)
|
32 | const mod = urlObj.protocol === 'http:' ? http : https
|
33 |
|
34 | const parser = pickup({ objectMode: true })
|
35 |
|
36 | mod.get(urlObj, (res) => {
|
37 | res.pipe(parser)
|
38 | })
|
39 |
|
40 | return parser
|
41 | }
|
42 |
|
43 | function read (stream, prop) {
|
44 | stream.on('readable', () => {
|
45 | const obj = stream.read()
|
46 | if (obj === null) {
|
47 | return
|
48 | }
|
49 | console.log(util.inspect(prop ? obj[prop] : obj, { colors: true }))
|
50 | })
|
51 | }
|