antsjs
Version:
Task Runner
66 lines (65 loc) • 2.09 kB
JavaScript
var Task = /** @class */ (function () {
function Task(name, fun) {
this.name = name;
this.logs = Array();
this.fun = null;
this.fun = fun;
}
Task.prototype.log = function (str, print) {
if (print === void 0) { print = false; }
str = '[' + this.name + '] - ' + Date.now() + ': ' + str;
this.logs.push(str);
if (print)
console.log(str);
};
Task.prototype.before = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
//...
};
Task.prototype.after = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
//...
};
return Task;
}());
var ant = {
tasks: Array(),
add: function (id, fun) {
var _task = new Task(id, fun);
ant.tasks.push(_task);
_task.log('Task [' + id + ']' + ' will created');
return _task;
},
remove: function (id) {
return ant.tasks.splice(ant.tasks.findIndex(function (x) { return x.name == id; }), 1);
},
run: function (id) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
var _task = ant.find(id);
if (!_task)
throw new Error('Undefined Task - ' + id);
args.push(_task);
_task.log('Task [' + id + ']' + ' [before] calling...');
var _args = _task.before.apply(this, args);
if (Array.isArray(_args))
args = _args;
_task.log('Task [' + id + ']' + ' calling...');
var _result = _task.fun.apply(this, args);
_task.log('Task [' + id + ']' + ' [after] calling...');
_task.after.apply(this, args);
return _result;
},
find: function (id) {
return ant.tasks.find(function (x) { return x.name == id; });
}
};
module.exports = ant;