runok
Version:
NPM scripts on steroids! Replace your scripts with pure JS
61 lines (60 loc) • 1.93 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Result = void 0;
const chalk_1 = require("chalk");
const output_1 = require("./output");
const Timer = require('timer-node');
var TaskStatus;
(function (TaskStatus) {
TaskStatus[TaskStatus["SUCCESS"] = 0] = "SUCCESS";
TaskStatus[TaskStatus["ERROR"] = 1] = "ERROR";
TaskStatus[TaskStatus["PENDING"] = 2] = "PENDING";
})(TaskStatus || (TaskStatus = {}));
class Result {
constructor(task) {
this.output = output_1.createOutput(`#${Result.taskId} ${task}`);
this.duration = new Timer(task);
this.duration.start();
this.status = TaskStatus.PENDING;
}
static start(task, print = '') {
Result.taskId += 1;
const result = new Result(task);
result.output.started(print);
return result;
}
success(data = {}) {
this.finish();
this.data = data;
const duration = this.duration ? chalk_1.default.grey(` in ${this.duration.milliseconds()} ms`) : '';
this.output.success(`Finished ${duration}`);
return this;
}
fail(error, data = {}) {
this.error = error;
this.data = data;
this.finish();
const duration = this.duration ? chalk_1.default.grey(` in ${this.duration.milliseconds()} ms`) : '';
if (this.error) {
this.output.fatal(`Failed with "${this.error.message}" ${duration}`);
}
else {
this.output.fatal(`Failed ${duration}`);
}
if (Result.shouldStopOnFail) {
this.output.warn('Execution stopped');
process.exit(1);
}
return this;
}
wasSuccessful() {
return this.status === TaskStatus.SUCCESS;
}
finish() {
if (this.duration)
this.duration.stop();
}
}
exports.Result = Result;
Result.taskId = 0;
Result.shouldStopOnFail = true;