build-raptor 0.131.0 → 0.133.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/deps/brand/brand.d.ts +5 -0
- package/dist/deps/brand/brand.js +3 -0
- package/dist/deps/brand/index.d.ts +1 -0
- package/dist/deps/brand/index.js +18 -0
- package/dist/deps/build-failed-error/build-failed-error.d.ts +14 -0
- package/dist/deps/build-failed-error/build-failed-error.js +13 -0
- package/dist/deps/build-failed-error/index.d.ts +1 -0
- package/dist/deps/build-failed-error/index.js +18 -0
- package/dist/deps/build-raptor-api/build-raptor-api.d.ts +351 -0
- package/dist/deps/build-raptor-api/build-raptor-api.js +132 -0
- package/dist/deps/build-raptor-api/index.d.ts +2 -0
- package/dist/deps/build-raptor-api/index.js +19 -0
- package/dist/deps/build-raptor-api/step-by-step-processor.d.ts +35 -0
- package/dist/deps/build-raptor-api/step-by-step-processor.js +3 -0
- package/dist/deps/build-raptor-core/breakdown.d.ts +18 -0
- package/dist/deps/build-raptor-core/breakdown.js +99 -0
- package/dist/deps/build-raptor-core/build-raptor-config.d.ts +21 -0
- package/dist/deps/build-raptor-core/build-raptor-config.js +25 -0
- package/dist/deps/build-raptor-core/default-asset-publisher.d.ts +10 -0
- package/dist/deps/build-raptor-core/default-asset-publisher.js +16 -0
- package/dist/deps/build-raptor-core/engine-bootstrapper.d.ts +50 -0
- package/dist/deps/build-raptor-core/engine-bootstrapper.js +200 -0
- package/dist/deps/build-raptor-core/engine-event-scheme.d.ts +20 -0
- package/dist/deps/build-raptor-core/engine-event-scheme.js +3 -0
- package/dist/deps/build-raptor-core/engine.d.ts +66 -0
- package/dist/deps/build-raptor-core/engine.js +285 -0
- package/dist/deps/build-raptor-core/examplify-zod.d.ts +93 -0
- package/dist/deps/build-raptor-core/examplify-zod.js +257 -0
- package/dist/deps/build-raptor-core/execution-plan.d.ts +20 -0
- package/dist/deps/build-raptor-core/execution-plan.js +66 -0
- package/dist/deps/build-raptor-core/execution-record.d.ts +17 -0
- package/dist/deps/build-raptor-core/execution-record.js +3 -0
- package/dist/deps/build-raptor-core/execution-type.d.ts +2 -0
- package/dist/deps/build-raptor-core/execution-type.js +3 -0
- package/dist/deps/build-raptor-core/find-repo-dir.d.ts +1 -0
- package/dist/deps/build-raptor-core/find-repo-dir.js +27 -0
- package/dist/deps/build-raptor-core/fingerprint-ledger.d.ts +33 -0
- package/dist/deps/build-raptor-core/fingerprint-ledger.js +164 -0
- package/dist/deps/build-raptor-core/fingerprint.d.ts +3 -0
- package/dist/deps/build-raptor-core/fingerprint.js +13 -0
- package/dist/deps/build-raptor-core/fingerprinter.d.ts +15 -0
- package/dist/deps/build-raptor-core/fingerprinter.js +122 -0
- package/dist/deps/build-raptor-core/hasher.d.ts +21 -0
- package/dist/deps/build-raptor-core/hasher.js +93 -0
- package/dist/deps/build-raptor-core/index.d.ts +9 -0
- package/dist/deps/build-raptor-core/index.js +26 -0
- package/dist/deps/build-raptor-core/model.d.ts +17 -0
- package/dist/deps/build-raptor-core/model.js +40 -0
- package/dist/deps/build-raptor-core/nop-asset-publisher.d.ts +6 -0
- package/dist/deps/build-raptor-core/nop-asset-publisher.js +12 -0
- package/dist/deps/build-raptor-core/performance-report.d.ts +5 -0
- package/dist/deps/build-raptor-core/performance-report.js +3 -0
- package/dist/deps/build-raptor-core/phase.d.ts +1 -0
- package/dist/deps/build-raptor-core/phase.js +3 -0
- package/dist/deps/build-raptor-core/planner.d.ts +12 -0
- package/dist/deps/build-raptor-core/planner.js +43 -0
- package/dist/deps/build-raptor-core/purger.d.ts +11 -0
- package/dist/deps/build-raptor-core/purger.js +65 -0
- package/dist/deps/build-raptor-core/slot-index.d.ts +6 -0
- package/dist/deps/build-raptor-core/slot-index.js +17 -0
- package/dist/deps/build-raptor-core/step-by-step-transmitter.d.ts +15 -0
- package/dist/deps/build-raptor-core/step-by-step-transmitter.js +94 -0
- package/dist/deps/build-raptor-core/tar-stream.d.ts +20 -0
- package/dist/deps/build-raptor-core/tar-stream.js +194 -0
- package/dist/deps/build-raptor-core/task-executor.d.ts +32 -0
- package/dist/deps/build-raptor-core/task-executor.js +321 -0
- package/dist/deps/build-raptor-core/task-store-cli.d.ts +1 -0
- package/dist/deps/build-raptor-core/task-store-cli.js +61 -0
- package/dist/deps/build-raptor-core/task-store-event.d.ts +17 -0
- package/dist/deps/build-raptor-core/task-store-event.js +3 -0
- package/dist/deps/build-raptor-core/task-store.d.ts +41 -0
- package/dist/deps/build-raptor-core/task-store.js +302 -0
- package/dist/deps/build-raptor-core/task-summary.d.ts +12 -0
- package/dist/deps/build-raptor-core/task-summary.js +3 -0
- package/dist/deps/build-raptor-core/task-tracker.d.ts +23 -0
- package/dist/deps/build-raptor-core/task-tracker.js +97 -0
- package/dist/deps/build-raptor-core/task.d.ts +30 -0
- package/dist/deps/build-raptor-core/task.js +90 -0
- package/dist/deps/build-raptor-core/updatable-task-output-registry.d.ts +13 -0
- package/dist/deps/build-raptor-core/updatable-task-output-registry.js +75 -0
- package/dist/deps/build-raptor-core/validate-task-infos.d.ts +3 -0
- package/dist/deps/build-raptor-core/validate-task-infos.js +53 -0
- package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.d.ts +1 -0
- package/dist/deps/build-raptor-core-testkit/build-raptor-core-testkit.js +18 -0
- package/dist/deps/build-raptor-core-testkit/driver.d.ts +119 -0
- package/dist/deps/build-raptor-core-testkit/driver.js +305 -0
- package/dist/deps/build-raptor-core-testkit/index.d.ts +3 -0
- package/dist/deps/build-raptor-core-testkit/index.js +20 -0
- package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.d.ts +35 -0
- package/dist/deps/build-raptor-core-testkit/repo-protocol-testkit.js +226 -0
- package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.d.ts +27 -0
- package/dist/deps/build-raptor-core-testkit/simple-node-repo-protocol.js +140 -0
- package/dist/deps/build-run-id/build-run-id.d.ts +3 -0
- package/dist/deps/build-run-id/build-run-id.js +13 -0
- package/dist/deps/build-run-id/index.d.ts +1 -0
- package/dist/deps/build-run-id/index.js +18 -0
- package/dist/deps/core-types/core-types.d.ts +29 -0
- package/dist/deps/core-types/core-types.js +81 -0
- package/dist/deps/core-types/index.d.ts +1 -0
- package/dist/deps/core-types/index.js +18 -0
- package/dist/deps/logger/index.d.ts +1 -0
- package/dist/deps/logger/index.js +18 -0
- package/dist/deps/logger/logger.d.ts +26 -0
- package/dist/deps/logger/logger.js +152 -0
- package/dist/deps/misc/arrays.d.ts +7 -0
- package/dist/deps/misc/arrays.js +67 -0
- package/dist/deps/misc/camelize-record.d.ts +6 -0
- package/dist/deps/misc/camelize-record.js +16 -0
- package/dist/deps/misc/clean-directory.d.ts +4 -0
- package/dist/deps/misc/clean-directory.js +80 -0
- package/dist/deps/misc/constructs.d.ts +106 -0
- package/dist/deps/misc/constructs.js +131 -0
- package/dist/deps/misc/directory-scanner.d.ts +49 -0
- package/dist/deps/misc/directory-scanner.js +165 -0
- package/dist/deps/misc/executor.d.ts +39 -0
- package/dist/deps/misc/executor.js +59 -0
- package/dist/deps/misc/file-system-storage-client.d.ts +23 -0
- package/dist/deps/misc/file-system-storage-client.js +93 -0
- package/dist/deps/misc/folderify.d.ts +8 -0
- package/dist/deps/misc/folderify.js +86 -0
- package/dist/deps/misc/graph.d.ts +29 -0
- package/dist/deps/misc/graph.js +200 -0
- package/dist/deps/misc/in-memory-storage-client.d.ts +21 -0
- package/dist/deps/misc/in-memory-storage-client.js +75 -0
- package/dist/deps/misc/index.d.ts +20 -0
- package/dist/deps/misc/index.js +37 -0
- package/dist/deps/misc/int.d.ts +10 -0
- package/dist/deps/misc/int.js +29 -0
- package/dist/deps/misc/internal/graph-executor.d.ts +15 -0
- package/dist/deps/misc/internal/graph-executor.js +93 -0
- package/dist/deps/misc/maps.d.ts +29 -0
- package/dist/deps/misc/maps.js +47 -0
- package/dist/deps/misc/misc.d.ts +23 -0
- package/dist/deps/misc/misc.js +94 -0
- package/dist/deps/misc/object-map.d.ts +10 -0
- package/dist/deps/misc/object-map.js +26 -0
- package/dist/deps/misc/promises.d.ts +39 -0
- package/dist/deps/misc/promises.js +78 -0
- package/dist/deps/misc/records.d.ts +11 -0
- package/dist/deps/misc/records.js +40 -0
- package/dist/deps/misc/slurp-dir.d.ts +1 -0
- package/dist/deps/misc/slurp-dir.js +14 -0
- package/dist/deps/misc/storage-client.d.ts +12 -0
- package/dist/deps/misc/storage-client.js +3 -0
- package/dist/deps/misc/stream-to-buffer.d.ts +2 -0
- package/dist/deps/misc/stream-to-buffer.js +26 -0
- package/dist/deps/misc/strings.d.ts +12 -0
- package/dist/deps/misc/strings.js +68 -0
- package/dist/deps/misc/typed-publisher.d.ts +17 -0
- package/dist/deps/misc/typed-publisher.js +65 -0
- package/dist/deps/repo-protocol/index.d.ts +3 -0
- package/dist/deps/repo-protocol/index.js +20 -0
- package/dist/deps/repo-protocol/repo-protocol.d.ts +49 -0
- package/dist/deps/repo-protocol/repo-protocol.js +3 -0
- package/dist/deps/repo-protocol/task-info.d.ts +18 -0
- package/dist/deps/repo-protocol/task-info.js +3 -0
- package/dist/deps/repo-protocol/test-run-summary.d.ts +54 -0
- package/dist/deps/repo-protocol/test-run-summary.js +32 -0
- package/dist/deps/repo-protocol-toolbox/generate-task-infos.d.ts +5 -0
- package/dist/deps/repo-protocol-toolbox/generate-task-infos.js +26 -0
- package/dist/deps/repo-protocol-toolbox/index.d.ts +3 -0
- package/dist/deps/repo-protocol-toolbox/index.js +20 -0
- package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.d.ts +10 -0
- package/dist/deps/repo-protocol-toolbox/repo-protocol-toolbox.js +90 -0
- package/dist/deps/repo-protocol-toolbox/task-definition.d.ts +14 -0
- package/dist/deps/repo-protocol-toolbox/task-definition.js +3 -0
- package/dist/deps/reporter-output/index.d.ts +1 -0
- package/dist/deps/reporter-output/index.js +18 -0
- package/dist/deps/reporter-output/reporter-output.d.ts +49 -0
- package/dist/deps/reporter-output/reporter-output.js +25 -0
- package/dist/deps/s3-storage-client/creds.d.ts +4 -0
- package/dist/deps/s3-storage-client/creds.js +3 -0
- package/dist/deps/s3-storage-client/get-s3-storage-client-factory.d.ts +3 -0
- package/dist/deps/s3-storage-client/get-s3-storage-client-factory.js +45 -0
- package/dist/deps/s3-storage-client/index.d.ts +2 -0
- package/dist/deps/s3-storage-client/index.js +19 -0
- package/dist/deps/s3-storage-client/main.d.ts +1 -0
- package/dist/deps/s3-storage-client/main.js +20 -0
- package/dist/deps/s3-storage-client/s3-storage-client.d.ts +25 -0
- package/dist/deps/s3-storage-client/s3-storage-client.js +134 -0
- package/dist/deps/task-name/index.d.ts +1 -0
- package/dist/deps/task-name/index.js +18 -0
- package/dist/deps/task-name/task-name.d.ts +17 -0
- package/dist/deps/task-name/task-name.js +44 -0
- package/dist/deps/unit-metadata/index.d.ts +1 -0
- package/dist/deps/unit-metadata/index.js +18 -0
- package/dist/deps/unit-metadata/unit-metadata.d.ts +14 -0
- package/dist/deps/unit-metadata/unit-metadata.js +32 -0
- package/dist/deps/yarn-repo-protocol/build-task-record.d.ts +61 -0
- package/dist/deps/yarn-repo-protocol/build-task-record.js +29 -0
- package/dist/deps/yarn-repo-protocol/generate-test-run-summary.d.ts +4 -0
- package/dist/deps/yarn-repo-protocol/generate-test-run-summary.js +26 -0
- package/dist/deps/yarn-repo-protocol/index.d.ts +2 -0
- package/dist/deps/yarn-repo-protocol/index.js +19 -0
- package/dist/deps/yarn-repo-protocol/rerun-list.d.ts +12 -0
- package/dist/deps/yarn-repo-protocol/rerun-list.js +6 -0
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.d.ts +24 -0
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol-config.js +34 -0
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.d.ts +82 -0
- package/dist/deps/yarn-repo-protocol/yarn-repo-protocol.js +1036 -0
- package/dist/src/build-raptor-cli.d.ts +60 -0
- package/dist/src/build-raptor-cli.js +514 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +20 -0
- package/dist/src/main.d.ts +2 -0
- package/dist/src/main.js +23 -0
- package/dist/src/register-asset-request.d.ts +18 -0
- package/dist/src/register-asset-request.js +11 -0
- package/dist/src/task-execution-visualizer.d.ts +17 -0
- package/dist/src/task-execution-visualizer.js +116 -0
- package/package.json +17 -14
- package/build-raptor.js +0 -7259
- package/index.d.ts +0 -22
- package/index.js +0 -7231
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Breakdown = void 0;
|
|
37
|
+
const fse = __importStar(require("fs-extra"));
|
|
38
|
+
const misc_1 = require("misc");
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const task_name_1 = require("task-name");
|
|
41
|
+
const unit_metadata_1 = require("unit-metadata");
|
|
42
|
+
class Breakdown {
|
|
43
|
+
constructor(overallVerdict, buildRunId, summaries, rootDir, performanceReport, crashCause, message) {
|
|
44
|
+
this.overallVerdict = overallVerdict;
|
|
45
|
+
this.buildRunId = buildRunId;
|
|
46
|
+
this.summaries = summaries;
|
|
47
|
+
this.rootDir = rootDir;
|
|
48
|
+
this.performanceReport = performanceReport;
|
|
49
|
+
this.crashCause = crashCause;
|
|
50
|
+
this.message = message;
|
|
51
|
+
}
|
|
52
|
+
get exitCode() {
|
|
53
|
+
return (0, misc_1.switchOn)(this.overallVerdict, {
|
|
54
|
+
OK: () => 0,
|
|
55
|
+
CRASH: () => 1,
|
|
56
|
+
FAIL: () => 2,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
getSummaries() {
|
|
60
|
+
return this.summaries;
|
|
61
|
+
}
|
|
62
|
+
async outputOf(taskKind, unitId, format = 'lines') {
|
|
63
|
+
const taskName = (0, task_name_1.TaskName)((0, unit_metadata_1.UnitId)(unitId), (0, task_name_1.TaskKind)(taskKind));
|
|
64
|
+
const finishedTask = this.summaries.find(t => t.taskName === taskName);
|
|
65
|
+
if (finishedTask === undefined) {
|
|
66
|
+
throw new Error(`No task with kind ${taskKind} and unitId ${unitId}`);
|
|
67
|
+
}
|
|
68
|
+
const status = finishedTask.verdict;
|
|
69
|
+
if (status === undefined) {
|
|
70
|
+
throw new Error(`status of ${unitId}/${taskKind} is ${status}`);
|
|
71
|
+
}
|
|
72
|
+
if (status === 'OK' || status === 'FAIL') {
|
|
73
|
+
const outputFile = finishedTask.outputFile;
|
|
74
|
+
if (!outputFile) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
const content = await fse.readFile(outputFile, 'utf8');
|
|
78
|
+
const trimmed = content.trim();
|
|
79
|
+
return format === 'string' ? trimmed : trimmed.split('\n');
|
|
80
|
+
}
|
|
81
|
+
if (status === 'CRASH') {
|
|
82
|
+
throw new Error(`Task ${finishedTask.taskName} crashed while running`);
|
|
83
|
+
}
|
|
84
|
+
if (status === 'UNKNOWN') {
|
|
85
|
+
throw new Error(`Task ${finishedTask.taskName} did not run`);
|
|
86
|
+
}
|
|
87
|
+
(0, misc_1.shouldNeverHappen)(status);
|
|
88
|
+
}
|
|
89
|
+
async readLines(relativePath) {
|
|
90
|
+
const resolved = path.join(this.rootDir, relativePath);
|
|
91
|
+
if (!(await fse.pathExists(resolved))) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
const content = await fse.readFile(resolved, 'utf8');
|
|
95
|
+
return content.trim().split('\n');
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.Breakdown = Breakdown;
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWtkb3duLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2JyZWFrZG93bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSw4Q0FBK0I7QUFDL0IsK0JBQWtEO0FBQ2xELDJDQUE0QjtBQUM1Qix5Q0FBOEM7QUFDOUMsaURBQXNDO0FBS3RDLE1BQWEsU0FBUztJQUNwQixZQUNXLGNBQXVDLEVBQ3ZDLFVBQXNCLEVBQ2QsU0FBd0IsRUFDeEIsT0FBZSxFQUN2QixpQkFBcUMsRUFDckMsVUFBb0IsRUFDcEIsT0FBZ0I7UUFOaEIsbUJBQWMsR0FBZCxjQUFjLENBQXlCO1FBQ3ZDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDZCxjQUFTLEdBQVQsU0FBUyxDQUFlO1FBQ3hCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDdkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFvQjtRQUNyQyxlQUFVLEdBQVYsVUFBVSxDQUFVO1FBQ3BCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFDeEIsQ0FBQztJQUVKLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBQSxlQUFRLEVBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNYLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2QsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDZCxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQTtJQUN2QixDQUFDO0lBSUQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFnQixFQUFFLE1BQWMsRUFBRSxTQUE2QixPQUFPO1FBQ25GLE1BQU0sUUFBUSxHQUFHLElBQUEsb0JBQVEsRUFBQyxJQUFBLHNCQUFNLEVBQUMsTUFBTSxDQUFDLEVBQUUsSUFBQSxvQkFBUSxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDN0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFBO1FBQ3RFLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLFFBQVEsZUFBZSxNQUFNLEVBQUUsQ0FBQyxDQUFBO1FBQ3ZFLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFBO1FBQ25DLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxNQUFNLElBQUksUUFBUSxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDekMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQTtZQUMxQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU8sRUFBRSxDQUFBO1lBQ1gsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLE1BQU0sR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDdEQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFBO1lBQzlCLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzVELENBQUM7UUFFRCxJQUFJLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLFFBQVEsWUFBWSxDQUFDLFFBQVEsd0JBQXdCLENBQUMsQ0FBQTtRQUN4RSxDQUFDO1FBRUQsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLFlBQVksQ0FBQyxRQUFRLGNBQWMsQ0FBQyxDQUFBO1FBQzlELENBQUM7UUFFRCxJQUFBLHdCQUFpQixFQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUyxDQUFDLFlBQW9CO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUN0RCxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxNQUFNLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3BELE9BQU8sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0NBQ0Y7QUFsRUQsOEJBa0VDIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const BuildRaptorConfig: z.ZodObject<{
|
|
3
|
+
repoProtocol: z.ZodDefault<z.ZodUnknown>;
|
|
4
|
+
verbosePrintTasks: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
5
|
+
tightFingerprints: z.ZodDefault<z.ZodBoolean>;
|
|
6
|
+
outDirName: z.ZodDefault<z.ZodString>;
|
|
7
|
+
fingerprintSeed: z.ZodDefault<z.ZodString>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
verbosePrintTasks: string[];
|
|
10
|
+
tightFingerprints: boolean;
|
|
11
|
+
outDirName: string;
|
|
12
|
+
fingerprintSeed: string;
|
|
13
|
+
repoProtocol?: unknown;
|
|
14
|
+
}, {
|
|
15
|
+
repoProtocol?: unknown;
|
|
16
|
+
verbosePrintTasks?: string[] | undefined;
|
|
17
|
+
tightFingerprints?: boolean | undefined;
|
|
18
|
+
outDirName?: string | undefined;
|
|
19
|
+
fingerprintSeed?: string | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
export type BuildRaptorConfig = z.infer<typeof BuildRaptorConfig>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuildRaptorConfig = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.BuildRaptorConfig = zod_1.z.object({
|
|
6
|
+
repoProtocol: zod_1.z.unknown().default(undefined).describe('Repo-protocol-specific configuration.'),
|
|
7
|
+
verbosePrintTasks: zod_1.z
|
|
8
|
+
.string()
|
|
9
|
+
.array()
|
|
10
|
+
.default([])
|
|
11
|
+
.describe("task names for which high-detail printing will be enabled. This allow the user to get detailed information about specific tasks. Example: ['foo:build', 'bar:test']."),
|
|
12
|
+
tightFingerprints: zod_1.z
|
|
13
|
+
.boolean()
|
|
14
|
+
.default(false)
|
|
15
|
+
.describe('[EXPERIMENTAL - Not yet stable] Selects one of two modes for determining when a task will run. A task will always run if one of the tasks listed in its TaskInfo.deps had to run. Additionally, a task will run if any of its inputs have changed (when this attribute is true) or if any of the tasks that generates its inputs had to run (when this attribute is false).'),
|
|
16
|
+
outDirName: zod_1.z
|
|
17
|
+
.string()
|
|
18
|
+
.default('.out')
|
|
19
|
+
.describe('Name of the directory at which outputs of tasks will be placed (other than compilation outputs which are currently under dist). This directory is created in each module.'),
|
|
20
|
+
fingerprintSeed: zod_1.z
|
|
21
|
+
.string()
|
|
22
|
+
.default('8')
|
|
23
|
+
.describe('Seed value for fingerprint computation. Changing this value invalidates all cached content by producing new fingerprints.'),
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcmFwdG9yLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZC1yYXB0b3ItY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUF1QjtBQUVWLFFBQUEsaUJBQWlCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxZQUFZLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsdUNBQXVDLENBQUM7SUFDOUYsaUJBQWlCLEVBQUUsT0FBQztTQUNqQixNQUFNLEVBQUU7U0FDUixLQUFLLEVBQUU7U0FDUCxPQUFPLENBQUMsRUFBRSxDQUFDO1NBQ1gsUUFBUSxDQUNQLHNLQUFzSyxDQUN2SztJQUNILGlCQUFpQixFQUFFLE9BQUM7U0FDakIsT0FBTyxFQUFFO1NBQ1QsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLFFBQVEsQ0FDUCw2V0FBNlcsQ0FDOVc7SUFDSCxVQUFVLEVBQUUsT0FBQztTQUNWLE1BQU0sRUFBRTtTQUNSLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDZixRQUFRLENBQ1AsMktBQTJLLENBQzVLO0lBQ0gsZUFBZSxFQUFFLE9BQUM7U0FDZixNQUFNLEVBQUU7U0FDUixPQUFPLENBQUMsR0FBRyxDQUFDO1NBQ1osUUFBUSxDQUNQLDJIQUEySCxDQUM1SDtDQUNKLENBQUMsQ0FBQSJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Logger } from 'logger';
|
|
2
|
+
import { StorageClient } from 'misc';
|
|
3
|
+
import { Publisher } from 'repo-protocol';
|
|
4
|
+
import { UnitMetadata } from 'unit-metadata';
|
|
5
|
+
export declare class DefaultAssetPublisher implements Publisher {
|
|
6
|
+
private readonly storageClient;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
constructor(storageClient: StorageClient, logger: Logger);
|
|
9
|
+
publishAsset(u: UnitMetadata, content: Buffer, name: string): Promise<string>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultAssetPublisher = void 0;
|
|
4
|
+
class DefaultAssetPublisher {
|
|
5
|
+
constructor(storageClient, logger) {
|
|
6
|
+
this.storageClient = storageClient;
|
|
7
|
+
this.logger = logger;
|
|
8
|
+
}
|
|
9
|
+
async publishAsset(u, content, name) {
|
|
10
|
+
const resolved = await this.storageClient.putContentAddressable(content);
|
|
11
|
+
this.logger.info(`Asset ${u.id}/${name} uploaded to CAS ${resolved}`);
|
|
12
|
+
return resolved;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.DefaultAssetPublisher = DefaultAssetPublisher;
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1hc3NldC1wdWJsaXNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGVmYXVsdC1hc3NldC1wdWJsaXNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EsTUFBYSxxQkFBcUI7SUFDaEMsWUFBNkIsYUFBNEIsRUFBbUIsTUFBYztRQUE3RCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFtQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUU5RixLQUFLLENBQUMsWUFBWSxDQUFDLENBQWUsRUFBRSxPQUFlLEVBQUUsSUFBWTtRQUMvRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksb0JBQW9CLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFDckUsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQztDQUNGO0FBUkQsc0RBUUMifQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { PathInRepo } from 'core-types';
|
|
2
|
+
import { Criticality, Logger } from 'logger';
|
|
3
|
+
import { StorageClient, Subscribable } from 'misc';
|
|
4
|
+
import { RepoProtocol } from 'repo-protocol';
|
|
5
|
+
import { Breakdown } from './breakdown';
|
|
6
|
+
import { EngineOptions } from './engine';
|
|
7
|
+
import { EngineEventScheme } from './engine-event-scheme';
|
|
8
|
+
import { StepByStepTransmitter } from './step-by-step-transmitter';
|
|
9
|
+
export interface TaskSelector {
|
|
10
|
+
/**
|
|
11
|
+
* units the units whose tasks are to be built. An empty array means "all units".
|
|
12
|
+
*/
|
|
13
|
+
units: string[];
|
|
14
|
+
/**
|
|
15
|
+
* a list of output locations. The tasks that produce these outputs will be added to "tasks to run".
|
|
16
|
+
*/
|
|
17
|
+
goals: string[];
|
|
18
|
+
labels: string[];
|
|
19
|
+
}
|
|
20
|
+
export declare class EngineBootstrapper {
|
|
21
|
+
readonly t0: number;
|
|
22
|
+
readonly logger: Logger;
|
|
23
|
+
readonly storageClient: StorageClient;
|
|
24
|
+
readonly repoProtocol: RepoProtocol;
|
|
25
|
+
private readonly eventPublisher;
|
|
26
|
+
readonly transmitter: StepByStepTransmitter;
|
|
27
|
+
readonly rootDir: {
|
|
28
|
+
resolve: (pathInRepo?: PathInRepo) => string;
|
|
29
|
+
unresolve: (absolutePath: string) => PathInRepo;
|
|
30
|
+
toString: () => string;
|
|
31
|
+
toJSON: () => string;
|
|
32
|
+
};
|
|
33
|
+
private constructor();
|
|
34
|
+
private makeEngine;
|
|
35
|
+
static readonly CONFIG_FILES: string[];
|
|
36
|
+
private resolveConfigFile;
|
|
37
|
+
private readConfigFile;
|
|
38
|
+
get subscribable(): Subscribable<EngineEventScheme>;
|
|
39
|
+
private newBuildRunId;
|
|
40
|
+
getConfigFileExample(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Returns a "runner function". When the runner function is invoked, a build will run.
|
|
43
|
+
*
|
|
44
|
+
* @param configFile
|
|
45
|
+
* @param options
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
makeRunner(selector: TaskSelector, configFile: string | undefined, options: Omit<EngineOptions, 'config'>): Promise<() => Promise<Breakdown>>;
|
|
49
|
+
static create(rootDir: string, storageClient: StorageClient, repoProtocol: RepoProtocol, t0: number, criticalityLevel: Criticality, name?: string, logger?: Logger): Promise<EngineBootstrapper>;
|
|
50
|
+
}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.EngineBootstrapper = void 0;
|
|
37
|
+
const build_failed_error_1 = require("build-failed-error");
|
|
38
|
+
const build_run_id_1 = require("build-run-id");
|
|
39
|
+
const core_types_1 = require("core-types");
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const JsoncParser = __importStar(require("jsonc-parser"));
|
|
42
|
+
const logger_1 = require("logger");
|
|
43
|
+
const misc_1 = require("misc");
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const Tmp = __importStar(require("tmp-promise"));
|
|
46
|
+
const util = __importStar(require("util"));
|
|
47
|
+
const uuid = __importStar(require("uuid"));
|
|
48
|
+
const zod_1 = require("zod");
|
|
49
|
+
const breakdown_1 = require("./breakdown");
|
|
50
|
+
const build_raptor_config_1 = require("./build-raptor-config");
|
|
51
|
+
const engine_1 = require("./engine");
|
|
52
|
+
const examplify_zod_1 = require("./examplify-zod");
|
|
53
|
+
const step_by_step_transmitter_1 = require("./step-by-step-transmitter");
|
|
54
|
+
const task_store_1 = require("./task-store");
|
|
55
|
+
class EngineBootstrapper {
|
|
56
|
+
constructor(rootDir, t0, logger, storageClient, repoProtocol) {
|
|
57
|
+
this.t0 = t0;
|
|
58
|
+
this.logger = logger;
|
|
59
|
+
this.storageClient = storageClient;
|
|
60
|
+
this.repoProtocol = repoProtocol;
|
|
61
|
+
this.eventPublisher = new misc_1.TypedPublisher();
|
|
62
|
+
this.rootDir = (0, core_types_1.RepoRoot)(rootDir);
|
|
63
|
+
this.transmitter = new step_by_step_transmitter_1.StepByStepTransmitter(logger);
|
|
64
|
+
}
|
|
65
|
+
async makeEngine(selector, configFile, optionsSansConfig) {
|
|
66
|
+
const taskOutputDir = (await Tmp.dir()).path;
|
|
67
|
+
this.logger.info(`rootDir is ${this.rootDir}`);
|
|
68
|
+
this.logger.info(`The console outputs (stdout/stderr) of tasks are stored under ${taskOutputDir}`);
|
|
69
|
+
const resolvedConfigFile = configFile ? (0, core_types_1.PathInRepo)(configFile) : this.resolveConfigFile();
|
|
70
|
+
const options = {
|
|
71
|
+
...optionsSansConfig,
|
|
72
|
+
config: this.readConfigFile(resolvedConfigFile),
|
|
73
|
+
};
|
|
74
|
+
const taskStore = new task_store_1.TaskStore(this.rootDir, this.storageClient, this.logger, this.eventPublisher);
|
|
75
|
+
const stepByStepFile = path.join(options.buildRaptorDir, 'step-by-step.json');
|
|
76
|
+
this.transmitter.setOutputFile(stepByStepFile);
|
|
77
|
+
if (options.stepByStepProcessorModuleName) {
|
|
78
|
+
this.transmitter.dynamicallyLoadProcessor(options.stepByStepProcessorModuleName);
|
|
79
|
+
}
|
|
80
|
+
const engine = new engine_1.Engine(this.logger, this.rootDir, this.repoProtocol, taskStore, taskOutputDir, selector, this.eventPublisher, this.transmitter, options);
|
|
81
|
+
return engine;
|
|
82
|
+
}
|
|
83
|
+
resolveConfigFile() {
|
|
84
|
+
const arr = EngineBootstrapper.CONFIG_FILES.map(at => (0, core_types_1.PathInRepo)(at));
|
|
85
|
+
const existings = arr.flatMap(at => (fs.existsSync(this.rootDir.resolve(at)) ? [at] : []));
|
|
86
|
+
if (existings.length > 1) {
|
|
87
|
+
const quoted = existings.map(at => `"${at}"`);
|
|
88
|
+
throw new Error(`Found competing config files: ${quoted.join(', ')}. To avoid confusion, you must keep just one.`);
|
|
89
|
+
}
|
|
90
|
+
return existings.at(0);
|
|
91
|
+
}
|
|
92
|
+
readConfigFile(pathToConfigFile) {
|
|
93
|
+
if (pathToConfigFile === undefined) {
|
|
94
|
+
return build_raptor_config_1.BuildRaptorConfig.parse({});
|
|
95
|
+
}
|
|
96
|
+
const p = this.rootDir.resolve(pathToConfigFile);
|
|
97
|
+
try {
|
|
98
|
+
if (!fs.existsSync(p)) {
|
|
99
|
+
return build_raptor_config_1.BuildRaptorConfig.parse({});
|
|
100
|
+
}
|
|
101
|
+
const content = fs.readFileSync(p, 'utf-8');
|
|
102
|
+
const errors = [];
|
|
103
|
+
const parsed = JsoncParser.parse(content, errors, { allowTrailingComma: true, allowEmptyContent: true });
|
|
104
|
+
const e = errors.at(0);
|
|
105
|
+
if (e) {
|
|
106
|
+
throw new Error(`Bad format: ${JsoncParser.printParseErrorCode(e.error)} at position ${e.offset}`);
|
|
107
|
+
}
|
|
108
|
+
return build_raptor_config_1.BuildRaptorConfig.parse(parsed);
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
throw new Error(`could not read repo config file ${p} - ${(0, misc_1.errorLike)(e).message}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
get subscribable() {
|
|
115
|
+
return this.eventPublisher;
|
|
116
|
+
}
|
|
117
|
+
newBuildRunId() {
|
|
118
|
+
return (0, build_run_id_1.BuildRunId)(uuid.v4());
|
|
119
|
+
}
|
|
120
|
+
getConfigFileExample() {
|
|
121
|
+
const withRepoProtocol = zod_1.z.object({
|
|
122
|
+
...build_raptor_config_1.BuildRaptorConfig.shape,
|
|
123
|
+
repoProtocol: this.repoProtocol
|
|
124
|
+
.getConfigSchema()
|
|
125
|
+
.describe(build_raptor_config_1.BuildRaptorConfig.shape.repoProtocol.description ?? ''),
|
|
126
|
+
});
|
|
127
|
+
return (0, examplify_zod_1.examplifyZod)(withRepoProtocol, {});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Returns a "runner function". When the runner function is invoked, a build will run.
|
|
131
|
+
*
|
|
132
|
+
* @param configFile
|
|
133
|
+
* @param options
|
|
134
|
+
* @returns
|
|
135
|
+
*/
|
|
136
|
+
async makeRunner(selector, configFile, options) {
|
|
137
|
+
try {
|
|
138
|
+
const t1 = Date.now();
|
|
139
|
+
this.logger.info(`Creating a runner for ${JSON.stringify({ selector, options })}`);
|
|
140
|
+
const engine = await this.makeEngine(selector, configFile, options);
|
|
141
|
+
const buildRunId = this.newBuildRunId();
|
|
142
|
+
return async () => {
|
|
143
|
+
try {
|
|
144
|
+
const tracker = await engine.run(buildRunId);
|
|
145
|
+
const t2 = Date.now();
|
|
146
|
+
this.logger.info(`Engine finished in ${t2 - t1}ms (${t2 - this.t0}ms incl. bootstrapping)`);
|
|
147
|
+
const successful = tracker.successful;
|
|
148
|
+
this.logger.info(`tasks=${JSON.stringify(tracker.tasks(), null, 2)}`);
|
|
149
|
+
this.logger.info(`performance report: ${JSON.stringify(tracker.getPerformanceReport(), null, 2)}`);
|
|
150
|
+
if (successful) {
|
|
151
|
+
await engine.executeProgram();
|
|
152
|
+
}
|
|
153
|
+
return new breakdown_1.Breakdown(successful ? 'OK' : 'FAIL', buildRunId, tracker.tasks().map(t => summarizeTask(t)), this.rootDir.resolve(), tracker.getPerformanceReport());
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
if (err instanceof build_failed_error_1.BuildFailedError) {
|
|
157
|
+
const prefix = (0, misc_1.switchOn)(err.hint, {
|
|
158
|
+
program: () => '',
|
|
159
|
+
task: () => 'build-raptor detected the following problem: ',
|
|
160
|
+
});
|
|
161
|
+
// TODO(imaman): cover this print
|
|
162
|
+
this.logger.print(`${prefix}${err.message}`, 'high');
|
|
163
|
+
return new breakdown_1.Breakdown('FAIL', buildRunId, [], this.rootDir.resolve(), undefined, undefined, (0, misc_1.errorLike)(err).message);
|
|
164
|
+
}
|
|
165
|
+
this.logger.error(`this build-raptor run has crashed due to an unexpected error`, err);
|
|
166
|
+
this.logger.print(`this build-raptor run has crashed due to an unexpected error ${util.inspect(err)}`, 'high');
|
|
167
|
+
return new breakdown_1.Breakdown('CRASH', buildRunId, [], this.rootDir.resolve(), undefined, err);
|
|
168
|
+
}
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
catch (err) {
|
|
172
|
+
this.logger.error(`failed to initialize build-raptor`, err);
|
|
173
|
+
throw err;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
static async create(rootDir, storageClient, repoProtocol, t0, criticalityLevel, name, logger) {
|
|
177
|
+
if (!logger) {
|
|
178
|
+
const logFile = path.join(rootDir, 'build-raptor.log');
|
|
179
|
+
logger = (0, logger_1.createDefaultLogger)(logFile, criticalityLevel);
|
|
180
|
+
logger.info(`Logger initialized`);
|
|
181
|
+
const formatted = name ? ` ("${name}") ` : ' ';
|
|
182
|
+
logger.print(`logging${formatted}to ${logFile}`);
|
|
183
|
+
}
|
|
184
|
+
return new EngineBootstrapper(rootDir, t0, logger, storageClient, repoProtocol);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
exports.EngineBootstrapper = EngineBootstrapper;
|
|
188
|
+
EngineBootstrapper.CONFIG_FILES = ['.build-raptor.jsonc', '.build-raptor.json'];
|
|
189
|
+
function summarizeTask(t) {
|
|
190
|
+
return {
|
|
191
|
+
outputFile: t.record.outputFile,
|
|
192
|
+
taskName: t.name,
|
|
193
|
+
verdict: t.record.verdict,
|
|
194
|
+
execution: t.record.executionType,
|
|
195
|
+
startedAt: t.record.startedAt,
|
|
196
|
+
endedAt: t.record.endedAt,
|
|
197
|
+
rootCause: t.record.rootCause,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLWJvb3RzdHJhcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbmdpbmUtYm9vdHN0cmFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJEQUFxRDtBQUNyRCwrQ0FBeUM7QUFDekMsMkNBQWlEO0FBQ2pELHVDQUF3QjtBQUN4QiwwREFBMkM7QUFDM0MsbUNBQWlFO0FBQ2pFLCtCQUF1RjtBQUN2RiwyQ0FBNEI7QUFFNUIsaURBQWtDO0FBQ2xDLDJDQUE0QjtBQUM1QiwyQ0FBNEI7QUFDNUIsNkJBQXVCO0FBRXZCLDJDQUF1QztBQUN2QywrREFBeUQ7QUFDekQscUNBQWdEO0FBRWhELG1EQUE4QztBQUM5Qyx5RUFBa0U7QUFFbEUsNkNBQXdDO0FBZXhDLE1BQWEsa0JBQWtCO0lBSzdCLFlBQ0UsT0FBZSxFQUNOLEVBQVUsRUFDVixNQUFjLEVBQ2QsYUFBNEIsRUFDNUIsWUFBMEI7UUFIMUIsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQVRwQixtQkFBYyxHQUFHLElBQUkscUJBQWMsRUFBcUIsQ0FBQTtRQVd2RSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUEscUJBQVEsRUFBQyxPQUFPLENBQUMsQ0FBQTtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZ0RBQXFCLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUVPLEtBQUssQ0FBQyxVQUFVLENBQ3RCLFFBQXNCLEVBQ3RCLFVBQThCLEVBQzlCLGlCQUFnRDtRQUVoRCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMs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
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ExitStatus } from 'repo-protocol';
|
|
2
|
+
import { RepoProtocolEvent } from 'repo-protocol';
|
|
3
|
+
import { TaskName } from 'task-name';
|
|
4
|
+
import { Phase } from './phase';
|
|
5
|
+
import { TaskStoreEvent } from './task-store-event';
|
|
6
|
+
export type EngineEventScheme = TaskStoreEvent & RepoProtocolEvent & {
|
|
7
|
+
executionSkipped: TaskName;
|
|
8
|
+
executionStarted: TaskName;
|
|
9
|
+
executionEnded: {
|
|
10
|
+
taskName: TaskName;
|
|
11
|
+
status: ExitStatus;
|
|
12
|
+
outputFile: string;
|
|
13
|
+
pathInRepo: string;
|
|
14
|
+
time: number;
|
|
15
|
+
};
|
|
16
|
+
taskPhaseEnded: {
|
|
17
|
+
taskName: TaskName;
|
|
18
|
+
phase: Phase;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5naW5lLWV2ZW50LXNjaGVtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbmdpbmUtZXZlbnQtc2NoZW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { BuildRunId } from 'build-run-id';
|
|
2
|
+
import { RepoRoot } from 'core-types';
|
|
3
|
+
import { Logger } from 'logger';
|
|
4
|
+
import { Int, TypedPublisher } from 'misc';
|
|
5
|
+
import { RepoProtocol } from 'repo-protocol';
|
|
6
|
+
import { BuildRaptorConfig } from './build-raptor-config';
|
|
7
|
+
import { TaskSelector } from './engine-bootstrapper';
|
|
8
|
+
import { EngineEventScheme } from './engine-event-scheme';
|
|
9
|
+
import { ExecutionPlan } from './execution-plan';
|
|
10
|
+
import { Model } from './model';
|
|
11
|
+
import { StepByStepTransmitter } from './step-by-step-transmitter';
|
|
12
|
+
import { TaskStore } from './task-store';
|
|
13
|
+
import { TaskTracker } from './task-tracker';
|
|
14
|
+
export interface EngineOptions {
|
|
15
|
+
/**
|
|
16
|
+
* The directory that build-ratpor was invoked at. If relative it is relative to the repo root. If absolute it must
|
|
17
|
+
* point to a dir somewhere under the repo root.
|
|
18
|
+
*/
|
|
19
|
+
userDir: string;
|
|
20
|
+
checkGitIgnore?: boolean;
|
|
21
|
+
concurrency: Int;
|
|
22
|
+
buildRaptorDir: string;
|
|
23
|
+
fingerprintLedger?: boolean;
|
|
24
|
+
testCaching?: boolean;
|
|
25
|
+
commitHash: string | undefined;
|
|
26
|
+
stepByStepProcessorModuleName?: string;
|
|
27
|
+
config: BuildRaptorConfig;
|
|
28
|
+
toRun?: {
|
|
29
|
+
program: string;
|
|
30
|
+
args: string[];
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export declare class Engine {
|
|
34
|
+
private readonly logger;
|
|
35
|
+
private readonly rootDir;
|
|
36
|
+
private readonly repoProtocol;
|
|
37
|
+
private readonly taskStore;
|
|
38
|
+
private readonly taskOutputDir;
|
|
39
|
+
private readonly selector;
|
|
40
|
+
private readonly eventPublisher;
|
|
41
|
+
private readonly steps;
|
|
42
|
+
private readonly options;
|
|
43
|
+
private readonly fingerprintLedger;
|
|
44
|
+
private readonly purger;
|
|
45
|
+
private tracker?;
|
|
46
|
+
private readonly goals;
|
|
47
|
+
/**
|
|
48
|
+
*
|
|
49
|
+
* @param logger
|
|
50
|
+
* @param rootDir
|
|
51
|
+
* @param repoProtocol
|
|
52
|
+
* @param taskStore
|
|
53
|
+
* @param taskOutputDir
|
|
54
|
+
* @param command the task kind to run. An empty string means "all tasks".
|
|
55
|
+
* @param units the units whose tasks are to be run. An empty array means "all units".
|
|
56
|
+
* @param goals list of output locations. The tasks that produce these outputs will be added to "tasks to run".
|
|
57
|
+
* @param eventPublisher
|
|
58
|
+
* @param steps
|
|
59
|
+
* @param options
|
|
60
|
+
*/
|
|
61
|
+
constructor(logger: Logger, rootDir: RepoRoot, repoProtocol: RepoProtocol, taskStore: TaskStore, taskOutputDir: string, selector: TaskSelector, eventPublisher: TypedPublisher<EngineEventScheme>, steps: StepByStepTransmitter, options: EngineOptions);
|
|
62
|
+
run(buildRunId: BuildRunId): Promise<TaskTracker>;
|
|
63
|
+
executePlan(plan: ExecutionPlan, model: Model): Promise<TaskTracker>;
|
|
64
|
+
executeProgram(): Promise<void>;
|
|
65
|
+
loadModel(buildRunId: BuildRunId): Promise<Model>;
|
|
66
|
+
}
|