@o3r/core
Version:
Core of the Otter Framework
33 lines • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const architect_1 = require("@angular-devkit/architect");
const utils_1 = require("../utils");
exports.default = (0, architect_1.createBuilder)((0, utils_1.createBuilderWithMetricsIfInstalled)(async (options, context) => {
context.reportRunning();
/** List of parallel build references */
const processes = options.targets
.map((targetStr) => targetStr.split(':'))
.map(([project, target, configuration]) => ({ project, target, configuration }))
.map(async (target) => {
const baseOptions = await context.getTargetOptions(target);
const builderName = await context.getBuilderNameForTarget(target);
const buildOptions = await context.validateOptions({ ...baseOptions, watch: true }, builderName)
.catch(() => context.validateOptions(baseOptions, builderName));
if (buildOptions && typeof buildOptions.watch !== 'undefined') {
buildOptions.watch = true;
}
return context.scheduleTarget(target, buildOptions, { logger: context.logger.createChild(target.target) });
});
const builds = await Promise.all(processes);
/** First build that stopped / crashed */
const firstStopped = Promise.race(builds.map((build) => new Promise((_resolve, reject) => {
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- forwarding catch error
build.result.catch((e) => reject(e));
})));
// Stop all builds if the multi-watcher stops
context.addTeardown(async () => {
await Promise.all(builds.map((build) => build.stop()));
});
return firstStopped;
}));
//# sourceMappingURL=index.js.map