1 | "use strict";
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
8 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
9 | };
|
10 | var __importStar = (this && this.__importStar) || function (mod) {
|
11 | if (mod && mod.__esModule) return mod;
|
12 | var result = {};
|
13 | if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
|
14 | result["default"] = mod;
|
15 | return result;
|
16 | };
|
17 | Object.defineProperty(exports, "__esModule", { value: true });
|
18 | const fs_extra_1 = __importDefault(require("fs-extra"));
|
19 | const project_1 = __importDefault(require("liferay-npm-build-tools-common/lib/project"));
|
20 | const path_1 = __importDefault(require("path"));
|
21 | const pretty_time_1 = __importDefault(require("pretty-time"));
|
22 | const read_json_sync_1 = __importDefault(require("read-json-sync"));
|
23 | const semver_1 = __importDefault(require("semver"));
|
24 | const dependencies_1 = require("./dependencies");
|
25 | const insight = __importStar(require("./insight"));
|
26 | const jar_1 = __importDefault(require("./jar"));
|
27 | const log = __importStar(require("./log"));
|
28 | const manifest_1 = __importDefault(require("./manifest"));
|
29 | const report_1 = __importDefault(require("./report"));
|
30 | const copy_1 = __importDefault(require("./steps/copy"));
|
31 | const rules_1 = __importDefault(require("./steps/rules"));
|
32 | const transform_1 = __importDefault(require("./steps/transform"));
|
33 |
|
34 | function default_1(argv) {
|
35 | const versionsInfo = project_1.default.versionsInfo;
|
36 | if (argv.version) {
|
37 | versionsInfo.forEach((value, key) => {
|
38 | console.log(`"${key}":`, JSON.stringify(value, null, 2));
|
39 | });
|
40 | return;
|
41 | }
|
42 | report_1.default.versionsInfo(versionsInfo);
|
43 | if (project_1.default.misc.noTracking) {
|
44 | run();
|
45 | }
|
46 | else {
|
47 | log.debug('The tool is sending usage statistics to our remote servers.');
|
48 | insight.init().then(run);
|
49 | }
|
50 | }
|
51 | exports.default = default_1;
|
52 |
|
53 | function run() {
|
54 | try {
|
55 | const start = process.hrtime();
|
56 |
|
57 | const rootPkg = dependencies_1.getRootPkg();
|
58 | report_1.default.rootPackage(rootPkg);
|
59 |
|
60 | const depPkgsMap = dependencies_1.addPackageDependencies({}, project_1.default.dir.asNative, project_1.default.copy.includedDependencies);
|
61 | const depPkgs = Object.values(depPkgsMap).filter(pkg => !pkg.isRoot);
|
62 | report_1.default.dependencies(depPkgs);
|
63 | reportLinkedDependencies(project_1.default.pkgJson);
|
64 |
|
65 | report_1.default.rulesConfig(project_1.default.rules.config);
|
66 |
|
67 | if (manifest_1.default.loadedFromFile) {
|
68 | report_1.default.warn('This report is from an incremental build: some steps may be ' +
|
69 | 'missing (you may remove the output directory to force a ' +
|
70 | 'full build).');
|
71 | }
|
72 |
|
73 | copy_1.default(rootPkg, depPkgs)
|
74 | .then(() => rules_1.default(rootPkg, depPkgs))
|
75 | .then(() => transform_1.default(rootPkg, depPkgs))
|
76 | .then(() => manifest_1.default.save())
|
77 | .then(() => (project_1.default.jar.supported ? jar_1.default() : undefined))
|
78 | .then(() => {
|
79 |
|
80 | const hrtime = process.hrtime(start);
|
81 | report_1.default.executionTime(hrtime);
|
82 | log.info(`Bundling took ${pretty_time_1.default(hrtime)}`);
|
83 |
|
84 | report_1.default.sendAnalytics();
|
85 |
|
86 | if (project_1.default.misc.reportFile) {
|
87 | fs_extra_1.default.writeFileSync(project_1.default.misc.reportFile.asNative, report_1.default.toHtml());
|
88 | log.info(`Report written to ${project_1.default.misc.reportFile.asNative}`);
|
89 | }
|
90 | else if (report_1.default.warningsPresent) {
|
91 | log.debug('The build has emitted some warning messages.');
|
92 | }
|
93 | })
|
94 | .catch(abort);
|
95 | }
|
96 | catch (err) {
|
97 | abort(err);
|
98 | }
|
99 | }
|
100 |
|
101 | function reportLinkedDependencies(pkgJson) {
|
102 | ['dependencies', 'devDependencies'].forEach(scope => {
|
103 | if (pkgJson[scope] != null) {
|
104 | Object.keys(pkgJson[scope]).forEach(depName => {
|
105 | const depVersion = pkgJson[scope][depName];
|
106 | if (semver_1.default.validRange(depVersion) == null) {
|
107 | const depPkgJsonPath = path_1.default.join('node_modules', depName, 'package.json');
|
108 | const depPkgJson = read_json_sync_1.default(depPkgJsonPath);
|
109 | pkgJson[scope][depName] = depPkgJson.version;
|
110 | report_1.default.linkedDependency(depName, depVersion, depPkgJson.version);
|
111 | }
|
112 | });
|
113 | }
|
114 | });
|
115 | }
|
116 |
|
117 | function abort(err) {
|
118 | log.error(`
|
119 |
|
120 | ${err.stack}
|
121 |
|
122 | `);
|
123 | process.exit(1);
|
124 | }
|