1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const path_1 = require("path");
|
4 | const fs_1 = require("fs");
|
5 | const fs_extra_1 = require("fs-extra");
|
6 | const core_1 = require("@jscpd/core");
|
7 | const finder_1 = require("@jscpd/finder");
|
8 | function 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 | }
|
77 | exports.prepareOptions = prepareOptions;
|
78 |
|
\ | No newline at end of file |