UNPKG

runok

Version:

NPM scripts on steroids! Replace your scripts with pure JS

61 lines (60 loc) 1.93 kB
"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;