UNPKG

@qbyco/tjs-cli

Version:

TrafaletJS CLI Tool

122 lines (104 loc) 2.24 kB
"use strict"; //Need should require("should"); //helpers require("./lib/helpers/object"); require("./lib/helpers/string"); /** * * @type {{tasks: {store: {}}, sharedResources: {}}} */ let Server = { tasks: { store: {} }, sharedResources: {} }; /** * Server.shareResource * @param name * @param resource * @returns {boolean} */ Server.shareResource = function (name, resource) { this.sharedResources[name] = resource; return true; }; /** * Tasks.add * @param name */ Server.tasks.add = function (name) { if (undefined === this.store[name]) { this.store[name] = require("./tasks/" + name.replace(".", "/") + ".js"); try { this.store[name].should.have.property("init"); return this.store[name].init(this.extendLib({})); } catch (e) { throw e; } } return true; }; /** * Tasks.run * @param name * @param lib * @returns {*} */ Server.tasks.run = function (name, lib) { try { this.store.should.have.property(name); } catch (e) { this.add(name); } this.store[name].should.have.property('run'); (typeof this.store[name].run).should.equal('function'); lib = this.extendLib(lib); //Run in its context return this.store[name].run(lib); }; /** * Tasks.init * @param lib * @returns {*|{}} */ Server.tasks.extendLib = function (lib) { lib = lib || {}; if (0 < Object.keys(Server.sharedResources).length) { Object.keys(Server.sharedResources).forEach(function (item) { lib[item] = Server.sharedResources[item]; }); } return lib; }; /** * Public by facade */ module.exports = { tasks: { add: function (name) { return Server.tasks.add(name); }, run: function (name, lib) { return Server.tasks.run(name, lib || {}); } }, shareResource: function (name, resource) { return Server.shareResource(name, resource); }, getSharedResource: function (name) { return Server.sharedResources.getValueOf(name, function () { throw new Error("Asking for an invalid application resource: " + name); }); }, getCurrentDate: function () { let time; time = new Date(); return [ time.getFullYear(), time.getMonth(), time.getDay() ].join("-") } };