Inspired by the Spring Roo project, this library provides a simple way to write custom application specific shells with the following features:
- Auto-complete commands
- Command options
- Sub commands
- Extends from
inquirermodule - thus making all the features ofinquireravailable to the shell instance for taking user input. - Default
helpcommand which automatically prints help for all commands. Any command suffixed with help will display the help for that command.
$ npm install --save simple-shellvar shell = require('simple-shell');
shell.initialize(shellOptions);
// Register commands with the custom shell
shell.registerCommand(cmdOptions);
// Start the console and show prompt
shell.startConsole();
#>{
name: <String>,
authorName: <String>,
version: <String>,
exitMessage: <String>,
prompt: <String>
}
name: Name of the console application. default:package.json:name.authorName: Name of the author/Owner of the application. default:package.json:author.name.version: Versionof the application. default:package.json:version.exitMessage: Message to be displayed when user quits the console app. default:Good Bye!.prompt: Prompt to be displayed. Ex:#>. default:package.json:name.
All the options are optional and will be fetched from package.json if not provided.
{
name: <String>,
help: <String>,
context: <String>,
isAvailable: <Function>,
options: {
optionName: {
help: <String>,
required: <Boolean>,
defaultValue: <String|Number|Boolean>,
allowedValues: <Array>
}
},
handler: <Function to be called when the command is run>
}
name: Name of the command.help: Help string for the command that will be displayed when the user runshelp.context: A string representing a context under which the command is running. If set, the application's context will be set to this string on successful execution of the command.isAvailable(context): The function that will be called to determine if a command is available for execution. default: always returnstrue.handler(cmd, options, context): The handler function that will be called to execute a command. If the command is not successful, it is expected to throw anError. On successful execution of the command, the context will be set tocommand.context.optionName: Name of the option. This will be presented as--optionNameto the user.optionName.help: Help string for the option.optionName.required: Indicates if the option is a mandatory option or not. default:false.optionName.defaultValue: The default value for an option if user doesn't provide one.optionName.allowedValues: A list of valid values for the option.