UNPKG

grind-cli

Version:
117 lines (90 loc) 10.3 kB
"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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9DbGkuanMiXSwibmFtZXMiOlsiQ2xpIiwiY29uc3RydWN0b3IiLCJhcHAiLCJjb21tYW5kcyIsIm91dHB1dCIsInNjaGVkdWxlciIsIk91dHB1dCIsIlNjaGVkdWxlciIsInJlZ2lzdGVyIiwiU2NoZWR1bGVSdW5Db21tYW5kIiwiVGlua2VyQ29tbWFuZCIsInJ1biIsImFyZ3MiLCJwcm9jZXNzIiwiYXJndiIsInNsaWNlIiwiYm9vdCIsInRoZW4iLCJleGVjdXRlIiwiZXhpdCIsImNhdGNoIiwiZXJyIiwid3JpdGVFcnJvciIsImlucHV0IiwiSW5wdXQiLCJuYW1lIiwiYXJndW1lbnRzIiwidmFsdWUiLCJmb3JtYXR0ZXIiLCJkZWNvcmF0ZWQiLCJoYXNQYXJhbWV0ZXJPcHRpb24iLCJjb21tYW5kIiwiZGVmYXVsdENvbW1hbmQiLCJMaXN0Q29tbWFuZCIsImZpbmQiLCJDb21tYW5kTm90Rm91bmRFcnJvciIsIkhlbHBDb21tYW5kIiwibGVuZ3RoIiwiQXJyYXkiLCJpc0FycmF5IiwicHVzaCIsInNjaGVkdWxlIiwiY3JlYXRlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVU8sTUFBTUEsR0FBTixDQUFVO0FBTWhCQyxFQUFBQSxXQUFXLENBQUNDLEdBQUQsRUFBTTtBQUFBLFNBTGpCQSxHQUtpQixHQUxYLElBS1c7QUFBQSxTQUpqQkMsUUFJaUIsR0FKTixFQUlNO0FBQUEsU0FIakJDLE1BR2lCLEdBSFIsSUFHUTtBQUFBLFNBRmpCQyxTQUVpQixHQUZMLElBRUs7QUFDaEIsU0FBS0gsR0FBTCxHQUFXQSxHQUFYO0FBQ0EsU0FBS0UsTUFBTCxHQUFjLElBQUlFLGNBQUosQ0FBVyxJQUFYLENBQWQ7QUFDQSxTQUFLRCxTQUFMLEdBQWlCLElBQUlFLG9CQUFKLENBQWMsSUFBZCxDQUFqQjtBQUVBLFNBQUtDLFFBQUwsQ0FBY0Msc0NBQWQ7QUFDQSxTQUFLRCxRQUFMLENBQWNFLDRCQUFkO0FBQ0E7O0FBRURDLEVB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LEVBQW1DO0FBQ2xDLGFBQUs1QixRQUFMLENBQWNxQyxJQUFkLENBQW1CLElBQUlULE9BQUosQ0FBWSxLQUFLN0IsR0FBakIsRUFBc0IsSUFBdEIsQ0FBbkI7QUFDQSxPQUZELE1BRU87QUFDTixhQUFLQyxRQUFMLENBQWNxQyxJQUFkLENBQW1CVCxPQUFuQjtBQUNBO0FBQ0Q7QUFDRDs7QUFFRFUsRUFBQUEsUUFBUSxDQUFDZCxLQUFELEVBQVEsR0FBR2YsSUFBWCxFQUFpQjtBQUN4QixRQUFJQSxJQUFJLENBQUN5QixNQUFMLEdBQWMsQ0FBZCxJQUFtQkMsS0FBSyxDQUFDQyxPQUFOLENBQWMzQixJQUFJLENBQUMsQ0FBRCxDQUFsQixDQUF2QixFQUErQztBQUM5Q0EsTUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUMsQ0FBRCxDQUFYO0FBQ0E7O0FBRUQsV0FBTyxLQUFLUCxTQUFMLENBQWVxQyxNQUFmLENBQXNCZixLQUF0QixFQUE2QmYsSUFBN0IsQ0FBUDtBQUNBOztBQWhHZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnLi9Db21tYW5kcy9IZWxwQ29tbWFuZCdcbmltcG9ydCAnLi9Db21tYW5kcy9MaXN0Q29tbWFuZCdcbmltcG9ydCAnLi9Db21tYW5kcy9TY2hlZHVsZVJ1bkNvbW1hbmQnXG5pbXBvcnQgJy4vQ29tbWFuZHMvVGlua2VyQ29tbWFuZCdcblxuaW1wb3J0ICcuL0Vycm9ycy9Db21tYW5kTm90Rm91bmRFcnJvcidcbmltcG9ydCAnLi9JbnB1dC9JbnB1dCdcbmltcG9ydCAnLi9PdXRwdXQvT3V0cHV0J1xuaW1wb3J0ICcuL1NjaGVkdWxlcidcblxuZXhwb3J0IGNsYXNzIENsaSB7XG5cdGFwcCA9IG51bGxcblx0Y29tbWFuZHMgPSBbXVxuXHRvdXRwdXQgPSBudWxsXG5cdHNjaGVkdWxlciA9IG51bGxcblxuXHRjb25zdHJ1Y3RvcihhcHApIHtcblx0XHR0aGlzLmFwcCA9IGFwcFxuXHRcdHRoaXMub3V0cHV0ID0gbmV3IE91dHB1dCh0aGlzKVxuXHRcdHRoaXMuc2NoZWR1bGVyID0gbmV3IFNjaGVkdWxlcih0aGlzKVxuXG5cdFx0dGhpcy5yZWdpc3RlcihTY2hlZHVsZVJ1bkNvbW1hbmQpXG5cdFx0dGhpcy5yZWdpc3RlcihUaW5rZXJDb21tYW5kKVxuXHR9XG5cblx0cnVuKGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpIHtcblx0XHRyZXR1cm4gdGhpcy5hcHBcblx0XHRcdC5ib290KClcblx0XHRcdC50aGVuKCgpID0+IHRoaXMuZXhlY3V0ZShhcmdzKSlcblx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0cHJvY2Vzcy5leGl0KDApXG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGVyciA9PiB7XG5cdFx0XHRcdHRoaXMub3V0cHV0LndyaXRlRXJyb3IoZXJyKVxuXHRcdFx0XHRwcm9jZXNzLmV4aXQoMSlcblx0XHRcdH0pXG5cdH1cblxuXHRhc3luYyBleGVjdXRlKGFyZ3MpIHtcblx0XHRjb25zdCBpbnB1dCA9IG5ldyBJbnB1dChhcmdzKVxuXHRcdGNvbnN0IG5hbWUgPSAoaW5wdXQuYXJndW1lbnRzWzBdIHx8IHt9KS52YWx1ZVxuXHRcdHRoaXMub3V0cHV0LmZvcm1hdHRlci5kZWNvcmF0ZWQgPSAhaW5wdXQuaGFzUGFyYW1ldGVyT3B0aW9uKCduby1hbnNpJylcblxuXHRcdGxldCBjb21tYW5kID0gbnVsbFxuXHRcdGxldCBkZWZhdWx0Q29tbWFuZCA9IGZhbHNlXG5cblx0XHRpZiAobmFtZS5pc05pbCkge1xuXHRcdFx0Y29tbWFuZCA9IG5ldyBMaXN0Q29tbWFuZCh0aGlzLmFwcCwgdGhpcylcblx0XHRcdGRlZmF1bHRDb21tYW5kID0gdHJ1ZVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb21tYW5kID0gdGhpcy5maW5kKG5hbWUpXG5cblx0XHRcdGlmIChjb21tYW5kLmlzTmlsKSB7XG5cdFx0XHRcdGlmIChuYW1lICE9PSAnaGVscCcpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgQ29tbWFuZE5vdEZvdW5kRXJyb3IobmFtZSlcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbW1hbmQgPSBuZXcgTGlzdENvbW1hbmQodGhpcy5hcHAsIHRoaXMpXG5cdFx0XHRcdGRlZmF1bHRDb21tYW5kID0gdHJ1ZVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCBydW4gPSBjb21tYW5kXG5cblx0XHRpZiAoXG5cdFx0XHQhZGVmYXVsdENvbW1hbmQgJiZcblx0XHRcdChpbnB1dC5oYXNQYXJhbWV0ZXJPcHRpb24oJ2hlbHAnKSB8fCBpbnB1dC5oYXNQYXJhbWV0ZXJPcHRpb24oJ2gnKSlcblx0XHQpIHtcblx0XHRcdHJ1biA9IG5ldyBIZWxwQ29tbWFuZCh0aGlzLmFwcCwgdGhpcywgY29tbWFuZClcblx0XHR9XG5cblx0XHRyZXR1cm4gcnVuLmV4ZWN1dGUoaW5wdXQpXG5cdH1cblxuXHRmaW5kKG5hbWUpIHtcblx0XHRmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuXHRcdFx0aWYgKGNvbW1hbmQubmFtZSA9PT0gbmFtZSkge1xuXHRcdFx0XHRyZXR1cm4gY29tbWFuZFxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBudWxsXG5cdH1cblxuXHRyZWdpc3RlciguLi5jb21tYW5kcykge1xuXHRcdGlmIChjb21tYW5kcy5sZW5ndGggPT09IDEpIHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGNvbW1hbmRzWzBdKSkge1xuXHRcdFx0XHRjb21tYW5kcyA9IGNvbW1hbmRzWzBdXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChjb25zdCBjb21tYW5kIG9mIGNvbW1hbmRzKSB7XG5cdFx0XHRpZiAodHlwZW9mIGNvbW1hbmQgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0dGhpcy5jb21tYW5kcy5wdXNoKG5ldyBjb21tYW5kKHRoaXMuYXBwLCB0aGlzKSlcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuY29tbWFuZHMucHVzaChjb21tYW5kKVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNjaGVkdWxlKHZhbHVlLCAuLi5hcmdzKSB7XG5cdFx0aWYgKGFyZ3MubGVuZ3RoID4gMCAmJiBBcnJheS5pc0FycmF5KGFyZ3NbMF0pKSB7XG5cdFx0XHRhcmdzID0gYXJnc1swXVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLnNjaGVkdWxlci5jcmVhdGUodmFsdWUsIGFyZ3MpXG5cdH1cbn1cbiJdfQ==