3.0.0 • Published 7 months ago
sushi v3.0.0
sushi
Express-like framework for CLI apps.
Installation
$ npm install sushi --save
Usage
myapp.js:
const sushi = require('sushi');
const app = sushi();
app.command('start', function () {
console.log('start command');
});
app.command('stop', function () {
console.log('stop command');
});
app.command('index', function () {
console.log('index command');
});
app.run();
Output:
$ node myapp.js start
start command
$ node myapp.js stop
stop command
$ node myapp.js
index command
Getting Started
Arguments
Program arguments are parsed using minimist.
Command can access arguments via req.args
:
app.command('start', function (req) {
var name = req.args._[0];
var delay = req.args.delay;
console.log('start', name, 'with', delay, 'delay');
});
$ node myapp.js start my-process --delay 500ms
start my-process with 500ms delay
You can also customize the way minimist
parses arguments by passing args
options (see minimist):
const app = sushi({
args: {
boolean: ['verbose']
}
});
Index command
Index command is executed when other commands don't match the arguments:
app.command('index', function () {
console.log('index command');
});
$ node myapp.js
index command
$ node myapp.js hello
Middleware
Middleware is a function, that modifies the context or arguments before target command is executed.
app.use(function (req, next) {
req.context.ok = true;
// call `next()` when done
next();
});
app.command('start', function (req) {
req.context.ok === true; // true
console.log('start command');
});
Middleware can also abort execution:
app.use(function (req, next) {
var err = new Error('Fatal error');
next(err);
});
app.command('start', function (req) {
// won't be executed
});
app.on('error', function (err) {
// err is the Error instance from middleware
err.message === 'Fatal error'; // true
});
Error handling
When one of the middleware or command itself throws an error,
error
event is emitted:
app.on('error', function (err) {
// err is the Error instance
});
You can use it to display a friendly error message, report it, etc.
List of middleware
Here's the list of middleware you can use with Sushi:
- help - help messages
Tests
$ npm test
License
MIT © Vadym Demedes