1 | 'use strict';
|
2 |
|
3 | const async = require('async');
|
4 | const chalk = require('chalk');
|
5 | const fs = require('fs');
|
6 | const program = require('commander');
|
7 | const programOptions = require('./options');
|
8 | const config = require('./config');
|
9 | const debug = require('./debug');
|
10 | const dict = require('./dictionary');
|
11 | const report = require('./report');
|
12 | const tasks = require('./tasks');
|
13 | const ignore = require('./ignore');
|
14 |
|
15 | const jsonDefault = require('../.yaspellerrc.default.json');
|
16 |
|
17 | programOptions.init({defaultIgnoreTags: jsonDefault.ignoreTags.join(',')});
|
18 | program.parse(process.argv);
|
19 |
|
20 | const isStdin = program.stdin;
|
21 | const jsonConfig = config.get(program.config);
|
22 | const json = Object.assign({}, jsonDefault, jsonConfig);
|
23 |
|
24 | const settings = {
|
25 | excludeFiles: json.excludeFiles,
|
26 | options: json.options || {}
|
27 | };
|
28 |
|
29 | chalk.enabled = program.colors;
|
30 | debug.setDebug(program.debug);
|
31 |
|
32 | [
|
33 | 'checkYo',
|
34 | 'fileExtensions',
|
35 | 'format',
|
36 | 'ignoreTags',
|
37 | 'ignoreText',
|
38 | 'lang',
|
39 | 'maxRequests'
|
40 | ].forEach(function(key) {
|
41 | settings[key] = program[key] || json[key];
|
42 | });
|
43 |
|
44 | settings.ignoreText = ignore.prepareRegExpToIgnoreText(settings.ignoreText);
|
45 |
|
46 | programOptions.apiOptions.forEach(function(el) {
|
47 | const key = el[0];
|
48 | if (program[key]) {
|
49 | settings.options[key] = true;
|
50 | } else if (typeof json[key] !== 'undefined') {
|
51 | settings.options[key] = json[key];
|
52 | }
|
53 | });
|
54 |
|
55 | dict.set(program.dictionary, json.dictionary);
|
56 |
|
57 | report.addReports(program.report || json.report);
|
58 |
|
59 | if (program.init) {
|
60 | const yrc = '.yaspellerrc';
|
61 | if (fs.existsSync(yrc)) {
|
62 | console.log(`File ${yrc} has already been created.`);
|
63 | } else {
|
64 | fs.writeFileSync(yrc, JSON.stringify(jsonDefault, null, 2));
|
65 | console.log(`Successfully created ${yrc} file in ${process.cwd()}`);
|
66 | }
|
67 | process.exit();
|
68 | }
|
69 |
|
70 | if (!isStdin && !program.args.length) {
|
71 | program.help();
|
72 | }
|
73 |
|
74 | async.series(
|
75 | isStdin ?
|
76 | tasks.forStdin(settings, program.stdinFilename) :
|
77 | tasks.forResources(program.args, settings),
|
78 | function() {
|
79 | report.onend();
|
80 | process.exit();
|
81 | }
|
82 | );
|