1 | #!/usr/bin/env node
|
2 |
|
3 | 'use strict';
|
4 |
|
5 | const chalk = require('chalk');
|
6 | const exit = require('exit');
|
7 | const program = require('commander');
|
8 | const utils = require('./utils');
|
9 |
|
10 | program
|
11 | .version(require('../package.json').version)
|
12 | .usage('[options] <file-or-url...>\n\n Restoring the letter “ё” (yo) in russian texts.')
|
13 | .option('-l, --lint', 'Search of safe and unsafe replacements')
|
14 | .option('--only-safe', 'Output only safe replacements')
|
15 | .option('-s, --sort', 'Sort results')
|
16 | .option('--no-colors', 'Clean output without colors')
|
17 | .option('--stdin', 'Process text provided on <STDIN>')
|
18 | .option('--stdin-filename <file>', 'Specify filename to process STDIN as')
|
19 | .parse(process.argv);
|
20 |
|
21 | chalk.enabled = program.colors;
|
22 |
|
23 | if (!program.stdin && !program.args.length) {
|
24 | program.help();
|
25 | }
|
26 |
|
27 | if (program.stdin) {
|
28 | let text = '';
|
29 |
|
30 | process.stdin
|
31 | .setEncoding('utf8')
|
32 | .on('readable', function() {
|
33 | const chunk = process.stdin.read();
|
34 | if (chunk !== null) {
|
35 | text += chunk;
|
36 | }
|
37 | })
|
38 | .on('end', function() {
|
39 | utils._processText(text, program.stdinFilename || 'stdin');
|
40 | exit(process.exitCode);
|
41 | });
|
42 | } else {
|
43 | Promise.all(program.args.map(resource => {
|
44 | return new Promise(resolve => {
|
45 | if (resource.search(/^https?:/) !== -1) {
|
46 | utils._processUrl(resource, resolve);
|
47 | } else {
|
48 | utils._processFile(resource, resolve);
|
49 | }
|
50 | });
|
51 | })).then(() => {
|
52 | exit(process.exitCode);
|
53 | });
|
54 | }
|