UNPKG

2.15 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const core_1 = require("@jscpd/core");
4const safe_1 = require("colors/safe");
5const finder_1 = require("@jscpd/finder");
6const init_1 = require("./init");
7const print_1 = require("./print");
8const crypto_1 = require("crypto");
9const store_1 = require("./init/store");
10const tokenizer_1 = require("@jscpd/tokenizer");
11const reporters_1 = require("./init/reporters");
12const subscribers_1 = require("./init/subscribers");
13const hooks_1 = require("./init/hooks");
14function jscpd(argv) {
15 const packageJson = require(__dirname + '/../package.json');
16 console.time(safe_1.italic(safe_1.grey('Detection time:')));
17 const cli = init_1.initCli(packageJson, argv);
18 const options = init_1.initOptions(cli);
19 if (options.list) {
20 print_1.printSupportedFormat();
21 }
22 if (options.debug) {
23 print_1.printOptions(options);
24 }
25 const files = finder_1.getFilesToDetect(options);
26 if (!options.path || options.path.length === 0) {
27 console.log(`"path" option not provided`);
28 return Promise.resolve([]);
29 }
30 if (options.debug) {
31 print_1.printFiles(files);
32 return Promise.resolve([]);
33 }
34 else {
35 const hashFunction = (value) => {
36 return crypto_1.createHash('md5').update(value).digest('hex');
37 };
38 options.hashFunction = options.hashFunction || hashFunction;
39 const store = store_1.getStore(cli.store);
40 const statistic = new core_1.Statistic(options);
41 const tokenizer = new tokenizer_1.Tokenizer();
42 const detector = new finder_1.InFilesDetector(tokenizer, store, statistic, options);
43 reporters_1.registerReporters(options, detector);
44 subscribers_1.registerSubscribers(options, detector);
45 hooks_1.registerHooks(options, detector);
46 return detector.detect(files).then((clones) => {
47 console.timeEnd(safe_1.italic(safe_1.grey('Detection time:')));
48 return clones;
49 }).finally(() => {
50 store.close();
51 });
52 }
53}
54exports.jscpd = jscpd;
55//# sourceMappingURL=index.js.map
\No newline at end of file