UNPKG

2.93 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const path_1 = require("path");
4const fs_1 = require("fs");
5const fs_extra_1 = require("fs-extra");
6const core_1 = require("@jscpd/core");
7const finder_1 = require("@jscpd/finder");
8function prepareOptions(cli) {
9 let config = cli.config ? path_1.resolve(cli.config) : path_1.resolve('.jscpd.json');
10 let storedConfig = {};
11 let packageJsonConfig;
12 const argsConfig = {
13 minTokens: cli.minTokens ? Number(cli.minTokens) : undefined,
14 minLines: cli.minLines ? Number(cli.minLines) : undefined,
15 maxLines: cli.maxLines ? Number(cli.maxLines) : undefined,
16 maxSize: cli.maxSize,
17 debug: cli.debug,
18 executionId: cli.executionId,
19 silent: cli.silent,
20 blame: cli.blame,
21 verbose: cli.verbose,
22 cache: cli.cache,
23 output: cli.output,
24 format: cli.format,
25 formatsExts: finder_1.parseFormatsExtensions(cli.formatsExts),
26 list: cli.list,
27 mode: cli.mode,
28 absolute: cli.absolute,
29 noSymlinks: cli.noSymlinks,
30 skipLocal: cli.skipLocal,
31 ignoreCase: cli.ignoreCase,
32 gitignore: cli.gitignore,
33 };
34 if (cli.threshold !== undefined) {
35 argsConfig.threshold = Number(cli.threshold);
36 }
37 if (cli.reporters) {
38 argsConfig.reporters = cli.reporters.split(',');
39 }
40 if (cli.format) {
41 argsConfig.format = cli.format.split(',');
42 }
43 if (cli.ignore) {
44 argsConfig.ignore = cli.ignore.split(',');
45 }
46 argsConfig.path = cli.path ? [cli.path].concat(cli.args) : cli.args;
47 Object.keys(argsConfig).forEach((key) => {
48 if (typeof argsConfig[key] === 'undefined') {
49 delete argsConfig[key];
50 }
51 });
52 if (!fs_1.existsSync(config)) {
53 config = '';
54 }
55 else {
56 storedConfig = fs_extra_1.readJSONSync(config);
57 }
58 if (fs_1.existsSync(process.cwd() + '/package.json')) {
59 packageJsonConfig = fs_extra_1.readJSONSync(process.cwd() + '/package.json').jscpd || {};
60 }
61 const result = Object.assign(Object.assign(Object.assign(Object.assign({ config }, core_1.getDefaultOptions()), packageJsonConfig), storedConfig), argsConfig);
62 if (config in result && result.config && path_1.isAbsolute(result.config) && result.path) {
63 result.path = result.path.map((path) => path_1.resolve(path_1.dirname(config), path));
64 }
65 result.reporters = result.reporters || [];
66 result.listeners = result.listeners || [];
67 if (result.silent) {
68 result.reporters = result.reporters
69 .filter((reporter) => !reporter.includes('console'))
70 .concat('silent');
71 }
72 if (result.threshold !== undefined) {
73 result.reporters = [...result.reporters, 'threshold'];
74 }
75 return result;
76}
77exports.prepareOptions = prepareOptions;
78//# sourceMappingURL=options.js.map
\No newline at end of file