grind-cli
Version:
CLI provider for Grind
117 lines (90 loc) • 10.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Cli = void 0;
var _HelpCommand = require("./Commands/HelpCommand.js");
var _ListCommand = require("./Commands/ListCommand.js");
var _ScheduleRunCommand = require("./Commands/ScheduleRunCommand.js");
var _TinkerCommand = require("./Commands/TinkerCommand.js");
var _CommandNotFoundError = require("./Errors/CommandNotFoundError.js");
var _Input = require("./Input/Input.js");
var _Output = require("./Output/Output.js");
var _Scheduler = require("./Scheduler.js");
function _isnil(val) { return val === null || typeof val === 'undefined'; }
class Cli {
constructor(app) {
this.app = null;
this.commands = [];
this.output = null;
this.scheduler = null;
this.app = app;
this.output = new _Output.Output(this);
this.scheduler = new _Scheduler.Scheduler(this);
this.register(_ScheduleRunCommand.ScheduleRunCommand);
this.register(_TinkerCommand.TinkerCommand);
}
run(args = process.argv.slice(2)) {
return this.app.boot().then(() => this.execute(args)).then(() => {
process.exit(0);
}).catch(err => {
this.output.writeError(err);
process.exit(1);
});
}
async execute(args) {
const input = new _Input.Input(args);
const name = (input.arguments[0] || {}).value;
this.output.formatter.decorated = !input.hasParameterOption('no-ansi');
let command = null;
let defaultCommand = false;
if (_isnil(name)) {
command = new _ListCommand.ListCommand(this.app, this);
defaultCommand = true;
} else {
command = this.find(name);
if (_isnil(command)) {
if (name !== 'help') {
throw new _CommandNotFoundError.CommandNotFoundError(name);
}
command = new _ListCommand.ListCommand(this.app, this);
defaultCommand = true;
}
}
let run = command;
if (!defaultCommand && (input.hasParameterOption('help') || input.hasParameterOption('h'))) {
run = new _HelpCommand.HelpCommand(this.app, this, command);
}
return run.execute(input);
}
find(name) {
for (const command of this.commands) {
if (command.name === name) {
return command;
}
}
return null;
}
register(...commands) {
if (commands.length === 1) {
if (Array.isArray(commands[0])) {
commands = commands[0];
}
}
for (const command of commands) {
if (typeof command === 'function') {
this.commands.push(new command(this.app, this));
} else {
this.commands.push(command);
}
}
}
schedule(value, ...args) {
if (args.length > 0 && Array.isArray(args[0])) {
args = args[0];
}
return this.scheduler.create(value, args);
}
}
exports.Cli = Cli;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9DbGkuanMiXSwibmFtZXMiOlsiQ2xpIiwiY29uc3RydWN0b3IiLCJhcHAiLCJjb21tYW5kcyIsIm91dHB1dCIsInNjaGVkdWxlciIsIk91dHB1dCIsIlNjaGVkdWxlciIsInJlZ2lzdGVyIiwiU2NoZWR1bGVSdW5Db21tYW5kIiwiVGlua2VyQ29tbWFuZCIsInJ1biIsImFyZ3MiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIiwiYm9vdCIsInRoZW4iLCJleGVjdXRlIiwiZXhpdCIsImNhdGNoIiwiZXJyIiwid3JpdGVFcnJvciIsImlucHV0IiwiSW5wdXQiLCJuYW1lIiwiYXJndW1lbnRzIiwidmFsdWUiLCJmb3JtYXR0ZXIiLCJkZWNvcmF0ZWQiLCJoYXNQYXJhbWV0ZXJPcHRpb24iLCJjb21tYW5kIiwiZGVmYXVsdENvbW1hbmQiLCJMaXN0Q29tbWFuZCIsImZpbmQiLCJDb21tYW5kTm90Rm91bmRFcnJvciIsIkhlbHBDb21tYW5kIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsInNjaGVkdWxlIiwiY3JlYXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVU8sTUFBTUEsR0FBTixDQUFVO0FBTWhCQyxFQUFBQSxXQUFXLENBQUNDLEdBQUQsRUFBTTtBQUFBLFNBTGpCQSxHQUtpQixHQUxYLElBS1c7QUFBQSxTQUpqQkMsUUFJaUIsR0FKTixFQUlNO0FBQUEsU0FIakJDLE1BR2lCLEdBSFIsSUFHUTtBQUFBLFNBRmpCQyxTQUVpQixHQUZMLElBRUs7QUFDaEIsU0FBS0gsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLElBQUlFLGNBQUosQ0FBVyxJQUFYLENBQWQ7QUFDQSxTQUFLRCxTQUFMLEdBQWlCLElBQUlFLG9CQUFKLENBQWMsSUFBZCxDQUFqQjtBQUVBLFNBQUtDLFFBQUwsQ0FBY0Msc0NBQWQ7QUFDQSxTQUFLRCxRQUFMLENBQWNFLDRCQUFkO0FBQ0E7O0FBRURDLEVBQUFBLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHQyxPQUFPLENBQUNDLElBQVIsQ0FBYUMsS0FBYixDQUFtQixDQUFuQixDQUFSLEVBQStCO0FBQ2pDLFdBQU8sS0FBS2IsR0FBTCxDQUNMYyxJQURLLEdBRUxDLElBRkssQ0FFQSxNQUFNLEtBQUtDLE9BQUwsQ0FBYU4sSUFBYixDQUZOLEVBR0xLLElBSEssQ0FHQSxNQUFNO0FBQ1hKLE1BQUFBLE9BQU8sQ0FBQ00sSUFBUixDQUFhLENBQWI7QUFDQSxLQUxLLEVBTUxDLEtBTkssQ0FNQ0MsR0FBRyxJQUFJO0FBQ2IsV0FBS2pCLE1BQUwsQ0FBWWtCLFVBQVosQ0FBdUJELEdBQXZCO0FBQ0FSLE1BQUFBLE9BQU8sQ0FBQ00sSUFBUixDQUFhLENBQWI7QUFDQSxLQVRLLENBQVA7QUFVQTs7QUFFRCxRQUFNRCxPQUFOLENBQWNOLElBQWQsRUFBb0I7QUFDbkIsVUFBTVcsS0FBSyxHQUFHLElBQUlDLFlBQUosQ0FBVVosSUFBVixDQUFkO0FBQ0EsVUFBTWEsSUFBSSxHQUFHLENBQUNGLEtBQUssQ0FBQ0csU0FBTixDQUFnQixDQUFoQixLQUFzQixFQUF2QixFQUEyQkMsS0FBeEM7QUFDQSxTQUFLdkIsTUFBTCxDQUFZd0IsU0FBWixDQUFzQkMsU0FBdEIsR0FBa0MsQ0FBQ04sS0FBSyxDQUFDTyxrQkFBTixDQUF5QixTQUF6QixDQUFuQztBQUVBLFFBQUlDLE9BQU8sR0FBRyxJQUFkO0FBQ0EsUUFBSUMsY0FBYyxHQUFHLEtBQXJCOztBQUVBLGVBQUlQLElBQUosR0FBZ0I7QUFDZk0sTUFBQUEsT0FBTyxHQUFHLElBQUlFLHdCQUFKLENBQWdCLEtBQUsvQixHQUFyQixFQUEwQixJQUExQixDQUFWO0FBQ0E4QixNQUFBQSxjQUFjLEdBQUcsSUFBakI7QUFDQSxLQUhELE1BR087QUFDTkQsTUFBQUEsT0FBTyxHQUFHLEtBQUtHLElBQUwsQ0FBVVQsSUFBVixDQUFWOztBQUVBLGlCQUFJTSxPQUFKLEdBQW1CO0FBQ2xCLFlBQUlOLElBQUksS0FBSyxNQUFiLEVBQXFCO0FBQ3BCLGdCQUFNLElBQUlVLDBDQUFKLENBQXlCVixJQUF6QixDQUFOO0FBQ0E7O0FBRURNLFFBQUFBLE9BQU8sR0FBRyxJQUFJRSx3QkFBSixDQUFnQixLQUFLL0IsR0FBckIsRUFBMEIsSUFBMUIsQ0FBVjtBQUNBOEIsUUFBQUEsY0FBYyxHQUFHLElBQWpCO0FBQ0E7QUFDRDs7QUFFRCxRQUFJckIsR0FBRyxHQUFHb0IsT0FBVjs7QUFFQSxRQUNDLENBQUNDLGNBQUQsS0FDQ1QsS0FBSyxDQUFDTyxrQkFBTixDQUF5QixNQUF6QixLQUFvQ1AsS0FBSyxDQUFDTyxrQkFBTixDQUF5QixHQUF6QixDQURyQyxDQURELEVBR0U7QUFDRG5CLE1BQUFBLEdBQUcsR0FBRyxJQUFJeUIsd0JBQUosQ0FBZ0IsS0FBS2xDLEdBQXJCLEVBQTBCLElBQTFCLEVBQWdDNkIsT0FBaEMsQ0FBTjtBQUNBOztBQUVELFdBQU9wQixHQUFHLENBQUNPLE9BQUosQ0FBWUssS0FBWixDQUFQO0FBQ0E7O0FBRURXLEVBQUFBLElBQUksQ0FBQ1QsSUFBRCxFQUFPO0FBQ1YsU0FBSyxNQUFNTSxPQUFYLElBQXNCLEtBQUs1QixRQUEzQixFQUFxQztBQUNwQyxVQUFJNEIsT0FBTyxDQUFDTixJQUFSLEtBQWlCQSxJQUFyQixFQUEyQjtBQUMxQixlQUFPTSxPQUFQO0FBQ0E7QUFDRDs7QUFFRCxXQUFPLElBQVA7QUFDQTs7QUFFRHZCLEVBQUFBLFFBQVEsQ0FBQyxHQUFHTCxRQUFKLEVBQWM7QUFDckIsUUFBSUEsUUFBUSxDQUFDa0MsTUFBVCxLQUFvQixDQUF4QixFQUEyQjtBQUMxQixVQUFJQyxLQUFLLENBQUNDLE9BQU4sQ0FBY3BDLFFBQVEsQ0FBQyxDQUFELENBQXRCLENBQUosRUFBZ0M7QUFDL0JBLFFBQUFBLFFBQVEsR0FBR0EsUUFBUSxDQUFDLENBQUQsQ0FBbkI7QUFDQTtBQUNEOztBQUVELFNBQUssTUFBTTRCLE9BQVgsSUFBc0I1QixRQUF0QixFQUFnQztBQUMvQixVQUFJLE9BQU80QixPQUFQLEtBQW1CLFVBQXZCLEVBQW1DO0FBQ2xDLGFBQUs1QixRQUFMLENBQWNxQyxJQUFkLENBQW1CLElBQUlULE9BQUosQ0FBWSxLQUFLN0IsR0FBakIsRUFBc0IsSUFBdEIsQ0FBbkI7QUFDQSxPQUZELE1BRU87QUFDTixhQUFLQyxRQUFMLENBQWNxQyxJQUFkLENBQW1CVCxPQUFuQjtBQUNBO0FBQ0Q7QUFDRDs7QUFFRFUsRUFBQUEsUUFBUSxDQUFDZCxLQUFELEVBQVEsR0FBR2YsSUFBWCxFQUFpQjtBQUN4QixRQUFJQSxJQUFJLENBQUN5QixNQUFMLEdBQWMsQ0FBZCxJQUFtQkMsS0FBSyxDQUFDQyxPQUFOLENBQWMzQixJQUFJLENBQUMsQ0FBRCxDQUFsQixDQUF2QixFQUErQztBQUM5Q0EsTUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUMsQ0FBRCxDQUFYO0FBQ0E7O0FBRUQsV0FBTyxLQUFLUCxTQUFMLENBQWVxQyxNQUFmLENBQXNCZixLQUF0QixFQUE2QmYsSUFBN0IsQ0FBUDtBQUNBOztBQWhHZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9Db21tYW5kcy9IZWxwQ29tbWFuZCdcbmltcG9ydCAnLi9Db21tYW5kcy9MaXN0Q29tbWFuZCdcbmltcG9ydCAnLi9Db21tYW5kcy9TY2hlZHVsZVJ1bkNvbW1hbmQnXG5pbXBvcnQgJy4vQ29tbWFuZHMvVGlua2VyQ29tbWFuZCdcblxuaW1wb3J0ICcuL0Vycm9ycy9Db21tYW5kTm90Rm91bmRFcnJvcidcbmltcG9ydCAnLi9JbnB1dC9JbnB1dCdcbmltcG9ydCAnLi9PdXRwdXQvT3V0cHV0J1xuaW1wb3J0ICcuL1NjaGVkdWxlcidcblxuZXhwb3J0IGNsYXNzIENsaSB7XG5cdGFwcCA9IG51bGxcblx0Y29tbWFuZHMgPSBbXVxuXHRvdXRwdXQgPSBudWxsXG5cdHNjaGVkdWxlciA9IG51bGxcblxuXHRjb25zdHJ1Y3RvcihhcHApIHtcblx0XHR0aGlzLmFwcCA9IGFwcFxuXHRcdHRoaXMub3V0cHV0ID0gbmV3IE91dHB1dCh0aGlzKVxuXHRcdHRoaXMuc2NoZWR1bGVyID0gbmV3IFNjaGVkdWxlcih0aGlzKVxuXG5cdFx0dGhpcy5yZWdpc3RlcihTY2hlZHVsZVJ1bkNvbW1hbmQpXG5cdFx0dGhpcy5yZWdpc3RlcihUaW5rZXJDb21tYW5kKVxuXHR9XG5cblx0cnVuKGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpIHtcblx0XHRyZXR1cm4gdGhpcy5hcHBcblx0XHRcdC5ib290KClcblx0XHRcdC50aGVuKCgpID0+IHRoaXMuZXhlY3V0ZShhcmdzKSlcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0cHJvY2Vzcy5leGl0KDApXG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGVyciA9PiB7XG5cdFx0XHRcdHRoaXMub3V0cHV0LndyaXRlRXJyb3IoZXJyKVxuXHRcdFx0XHRwcm9jZXNzLmV4aXQoMSlcblx0XHRcdH0pXG5cdH1cblxuXHRhc3luYyBleGVjdXRlKGFyZ3MpIHtcblx0XHRjb25zdCBpbnB1dCA9IG5ldyBJbnB1dChhcmdzKVxuXHRcdGNvbnN0IG5hbWUgPSAoaW5wdXQuYXJndW1lbnRzWzBdIHx8IHt9KS52YWx1ZVxuXHRcdHRoaXMub3V0cHV0LmZvcm1hdHRlci5kZWNvcmF0ZWQgPSAhaW5wdXQuaGFzUGFyYW1ldGVyT3B0aW9uKCduby1hbnNpJylcblxuXHRcdGxldCBjb21tYW5kID0gbnVsbFxuXHRcdGxldCBkZWZhdWx0Q29tbWFuZCA9IGZhbHNlXG5cblx0XHRpZiAobmFtZS5pc05pbCkge1xuXHRcdFx0Y29tbWFuZCA9IG5ldyBMaXN0Q29tbWFuZCh0aGlzLmFwcCwgdGhpcylcblx0XHRcdGRlZmF1bHRDb21tYW5kID0gdHJ1ZVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb21tYW5kID0gdGhpcy5maW5kKG5hbWUpXG5cblx0XHRcdGlmIChjb21tYW5kLmlzTmlsKSB7XG5cdFx0XHRcdGlmIChuYW1lICE9PSAnaGVscCcpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgQ29tbWFuZE5vdEZvdW5kRXJyb3IobmFtZSlcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbW1hbmQgPSBuZXcgTGlzdENvbW1hbmQodGhpcy5hcHAsIHRoaXMpXG5cdFx0XHRcdGRlZmF1bHRDb21tYW5kID0gdHJ1ZVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCBydW4gPSBjb21tYW5kXG5cblx0XHRpZiAoXG5cdFx0XHQhZGVmYXVsdENvbW1hbmQgJiZcblx0XHRcdChpbnB1dC5oYXNQYXJhbWV0ZXJPcHRpb24oJ2hlbHAnKSB8fCBpbnB1dC5oYXNQYXJhbWV0ZXJPcHRpb24oJ2gnKSlcblx0XHQpIHtcblx0XHRcdHJ1biA9IG5ldyBIZWxwQ29tbWFuZCh0aGlzLmFwcCwgdGhpcywgY29tbWFuZClcblx0XHR9XG5cblx0XHRyZXR1cm4gcnVuLmV4ZWN1dGUoaW5wdXQpXG5cdH1cblxuXHRmaW5kKG5hbWUpIHtcblx0XHRmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuXHRcdFx0aWYgKGNvbW1hbmQubmFtZSA9PT0gbmFtZSkge1xuXHRcdFx0XHRyZXR1cm4gY29tbWFuZFxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBudWxsXG5cdH1cblxuXHRyZWdpc3RlciguLi5jb21tYW5kcykge1xuXHRcdGlmIChjb21tYW5kcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGNvbW1hbmRzWzBdKSkge1xuXHRcdFx0XHRjb21tYW5kcyA9IGNvbW1hbmRzWzBdXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG5cdFx0XHRpZiAodHlwZW9mIGNvbW1hbmQgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0dGhpcy5jb21tYW5kcy5wdXNoKG5ldyBjb21tYW5kKHRoaXMuYXBwLCB0aGlzKSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuY29tbWFuZHMucHVzaChjb21tYW5kKVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNjaGVkdWxlKHZhbHVlLCAuLi5hcmdzKSB7XG5cdFx0aWYgKGFyZ3MubGVuZ3RoID4gMCAmJiBBcnJheS5pc0FycmF5KGFyZ3NbMF0pKSB7XG5cdFx0XHRhcmdzID0gYXJnc1swXVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnNjaGVkdWxlci5jcmVhdGUodmFsdWUsIGFyZ3MpXG5cdH1cbn1cbiJdfQ==