UNPKG

1.97 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.debug) {
27 print_1.printFiles(files);
28 }
29 else {
30 const hashFunction = (value) => {
31 return crypto_1.createHash('md5').update(value).digest('hex');
32 };
33 options.hashFunction = options.hashFunction || hashFunction;
34 const store = store_1.getStore(cli.store);
35 const statistic = new core_1.Statistic(options);
36 const tokenizer = new tokenizer_1.Tokenizer();
37 const detector = new finder_1.InFilesDetector(tokenizer, store, statistic, options);
38 reporters_1.registerReporters(options, detector);
39 subscribers_1.registerSubscribers(options, detector);
40 hooks_1.registerHooks(options, detector);
41 return detector.detect(files).then((clones) => {
42 console.timeEnd(safe_1.italic(safe_1.grey('Detection time:')));
43 return clones;
44 }).finally(() => {
45 store.close();
46 });
47 }
48}
49exports.jscpd = jscpd;
50//# sourceMappingURL=index.js.map
\No newline at end of file