UNPKG

2.08 kBJavaScriptView Raw
1'use strict';
2
3const async = require('async');
4const chalk = require('chalk');
5const fs = require('fs');
6const program = require('commander');
7const programOptions = require('./options');
8const config = require('./config');
9const debug = require('./debug');
10const dict = require('./dictionary');
11const report = require('./report');
12const tasks = require('./tasks');
13const ignore = require('./ignore');
14
15const jsonDefault = require('../.yaspellerrc.default.json');
16
17programOptions.init({defaultIgnoreTags: jsonDefault.ignoreTags.join(',')});
18program.parse(process.argv);
19
20const isStdin = program.stdin;
21const jsonConfig = config.get(program.config);
22const json = Object.assign({}, jsonDefault, jsonConfig);
23
24const settings = {
25 excludeFiles: json.excludeFiles,
26 options: json.options || {}
27};
28
29chalk.enabled = program.colors;
30debug.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
44settings.ignoreText = ignore.prepareRegExpToIgnoreText(settings.ignoreText);
45
46programOptions.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
55dict.set(program.dictionary, json.dictionary);
56
57report.addReports(program.report || json.report);
58
59if (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
70if (!isStdin && !program.args.length) {
71 program.help();
72}
73
74async.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);