Juke Build Hotfix 1 (#59643)

* Juke Build Fix

* More fixes
This commit is contained in:
Aleksej Komarov
2021-06-13 17:00:04 +02:00
committed by GitHub
parent c4868d1301
commit 280882b549
4 changed files with 44 additions and 18 deletions
+2
View File
@@ -139,4 +139,6 @@ const TgsTarget = Juke.createTarget({
Juke.setup({
default: DefaultTarget,
}).then((code) => {
process.exit(code);
});
+7 -1
View File
@@ -6,7 +6,13 @@ import { createParameter as _createParameter } from './parameter';
import { RunnerConfig } from './runner';
import { createTarget as _createTarget } from './target';
export { exec, chalk, glob, logger };
export declare const setup: (config?: RunnerConfig) => void;
/**
* Configures Juke Build and starts executing targets.
*
* @param config Juke Build configuration.
* @returns Exit code of the whole runner process.
*/
export declare const setup: (config?: RunnerConfig) => Promise<number>;
export declare const createTarget: typeof _createTarget;
export declare const createParameter: typeof _createParameter;
export declare const sleep: (time: number) => Promise<unknown>;
+34 -16
View File
@@ -6715,15 +6715,23 @@ const runner = new class Runner {
});
}
await Promise.all(this.workers.map(worker => new Promise(resolve => {
worker.onFinish(resolve);
const resolutions = await Promise.all(this.workers.map(worker => new Promise(resolve => {
worker.onFinish(() => resolve(true));
worker.onFail(() => resolve(false));
worker.start();
})));
const time = (Date.now() - startedAt) / 1000 + 's';
const hasFailedWorkers = resolutions.includes(false); // Show done only in happy path
const timeStr = _chalk.default.magenta(time);
if (!hasFailedWorkers) {
const time = (Date.now() - startedAt) / 1000 + 's';
_logger.logger.action(`Done in ${timeStr}`);
const timeStr = _chalk.default.magenta(time);
_logger.logger.action(`Done in ${timeStr}`);
} // Exit code 0 or 1 depdending on the fail state.
return Number(hasFailedWorkers);
}
}();
@@ -6747,17 +6755,11 @@ class Worker {
}
rejectDependency(target) {
if (this.hasFailed || !this.dependencies.has(target)) {
return;
}
var _this$generator2;
this.dependencies.delete(target);
this.hasFailed = true;
const nameStr = _chalk.default.cyan(this.target.name);
_logger.logger.error(`Target '${nameStr}' failed`);
this.emitter.emit('fail');
(_this$generator2 = this.generator) == null ? void 0 : _this$generator2.next();
}
start() {
@@ -6793,6 +6795,11 @@ class Worker {
if (this.hasFailed) {
const nameStr = _chalk.default.cyan(this.target.name);
_logger.logger.error(`Target '${nameStr}' failed`);
this.emitter.emit('fail');
return;
} // Compare inputs and outputs
@@ -6818,6 +6825,11 @@ class Worker {
if (this.hasFailed) {
const nameStr = _chalk.default.cyan(this.target.name);
_logger.logger.error(`Target '${nameStr}' failed (at file comparison stage)`);
this.emitter.emit('fail');
return;
} // Execute the task
@@ -6838,7 +6850,7 @@ class Worker {
if (err instanceof _exec.ExitError) {
const codeStr = _chalk.default.red(err.code);
_logger.logger.error(`Target '${nameStr}' failed in ${timeStr} (${codeStr})`);
_logger.logger.error(`Target '${nameStr}' failed in ${timeStr}, exit code: ${codeStr}`);
} else {
_logger.logger.error(`Target '${nameStr}' failed in ${timeStr}, unhandled exception:`);
@@ -7079,6 +7091,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
const autoParameters = [];
const autoTargets = [];
/**
* Configures Juke Build and starts executing targets.
*
* @param config Juke Build configuration.
* @returns Exit code of the whole runner process.
*/
const setup = (config = {}) => {
config = { ...config
@@ -7094,7 +7112,7 @@ const setup = (config = {}) => {
_runner.runner.configure(config);
_runner.runner.start();
return _runner.runner.start();
};
exports.setup = setup;
+1 -1
View File
@@ -17,7 +17,7 @@ export declare const runner: {
parameters: Parameter[];
workers: Worker[];
configure(config: RunnerConfig): void;
start(): Promise<void>;
start(): Promise<number>;
};
declare class Worker {
readonly target: Target;