马宇豪
2024-07-16 f591c27b57e2418c9495bc02ae8cfff84d35bc18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/env node
 
/*!
 * Module dependencies.
 */
 
var qrcode = require('../lib/main'),
    path = require('path'),
    fs = require('fs');
 
/*!
 * Parse the process name
 */
 
var name = process.argv[1].replace(/^.*[\\\/]/, '').replace('.js', '');
 
/*!
 * Parse the input
 */
 
if (process.stdin.isTTY) {
    // called with input as argument, e.g.:
    // ./qrcode-terminal.js "INPUT"
 
    var input = process.argv[2];
    handleInput(input);
} else {
    // called with piped input, e.g.:
    // echo "INPUT" | ./qrcode-terminal.js
 
    var readline = require('readline');
 
    var interface = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
        terminal: false
    });
 
    interface.on('line', function(line) {
        handleInput(line);
    });
}
 
/*!
 * Process the input
 */
 
function handleInput(input) {
 
    /*!
     * Display help
     */
 
    if (!input || input === '-h' || input === '--help') {
        help();
        process.exit();
    }
 
    /*!
     * Display version
     */
 
    if (input === '-v' || input === '--version') {
        version();
        process.exit();
    }
 
    /*!
     * Render the QR Code
     */
 
    qrcode.generate(input);
}
 
/*!
 * Helper functions
 */
 
function help() {
    console.log([
        '',
        'Usage: ' + name + ' <message>',
        '',
        'Options:',
        '  -h, --help           output usage information',
        '  -v, --version        output version number',
        '',
        'Examples:',
        '',
        '  $ ' + name + ' hello',
        '  $ ' + name + ' "hello world"',
        ''
    ].join('\n'));
}
 
function version() {
    var packagePath = path.join(__dirname, '..', 'package.json'),
        packageJSON = JSON.parse(fs.readFileSync(packagePath), 'utf8');
 
    console.log(packageJSON.version);
}