UNPKG

@adonisjs/ace

Version:

Commandline apps framework used by AdonisJs

119 lines (118 loc) 3.76 kB
"use strict"; /* * @adonisjs/ace * * (c) Harminder Virk <virk@adonisjs.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.UnknownFlagException = exports.InvalidCommandException = exports.InvalidFlagException = exports.MissingArgumentException = void 0; const cliui_1 = require("@poppinss/cliui"); const utils_1 = require("@poppinss/utils"); /** * Raised when a required argument is missing */ class MissingArgumentException extends utils_1.Exception { /** * A required argument is missing */ static invoke(name, command) { const exception = new this(`Missing required argument "${name}"`, 500, 'E_MISSING_ARGUMENT'); exception.argumentName = name; exception.command = command; return exception; } /** * Handle itself */ handle(error) { cliui_1.logger.error(cliui_1.logger.colors.red(`Missing required argument "${error.argumentName}"`)); } } exports.MissingArgumentException = MissingArgumentException; /** * Raised when an the type of a flag is not as one of the excepted type */ class InvalidFlagException extends utils_1.Exception { /** * Flag type validation failed. */ static invoke(prop, expected, command) { let article = 'a'; if (expected === 'number') { expected = 'numeric'; } if (expected === 'array') { article = 'an'; expected = 'array of strings'; } if (expected === 'numArray') { article = 'an'; expected = 'array of numbers'; } const exception = new this(`"${prop}" flag expects ${article} "${expected}" value`, 500, 'E_INVALID_FLAG'); exception.flagName = prop; exception.command = command; exception.expectedType = expected; return exception; } /** * Handle itself */ handle(error) { cliui_1.logger.error(cliui_1.logger.colors.red(`Expected "--${error.flagName}" to be a valid "${error.expectedType}"`)); } } exports.InvalidFlagException = InvalidFlagException; /** * Raised when command is not registered with kernel */ class InvalidCommandException extends utils_1.Exception { constructor() { super(...arguments); this.suggestions = []; } static invoke(commandName, suggestions) { const exception = new this(`"${commandName}" is not a registered command`, 500, 'E_INVALID_COMMAND'); exception.commandName = commandName; exception.suggestions = suggestions; return exception; } /** * Handle itself */ handle(error) { cliui_1.logger.error(`"${error.commandName}" command not found`); if (!error.suggestions.length) { return; } cliui_1.logger.log(''); const suggestionLog = (0, cliui_1.sticker)().heading('Did you mean one of these?'); error.suggestions.forEach((commandName) => { suggestionLog.add(cliui_1.logger.colors.yellow(commandName)); }); suggestionLog.render(); } } exports.InvalidCommandException = InvalidCommandException; /** * Raised when an unknown flag is defined */ class UnknownFlagException extends utils_1.Exception { /** * Unknown flag */ static invoke(prop) { const exception = new this(`Unknown flag "${prop}"`, 500, 'E_INVALID_FLAG'); return exception; } /** * Handle itself */ handle(error) { cliui_1.logger.error(cliui_1.logger.colors.red(error.message)); } } exports.UnknownFlagException = UnknownFlagException;