minish

0.5.4 • Public • Published

minish

Minish makes it easy to write applications that interact with a user using a simple shell-like command-line interface.

Installing

$ npm install --save minish

Usage

Starting an interactive command-line session is very simple. Just require minish, declare some commands and start a command prompt:

var shell = require('minish');
 
// 'hello' command
shell.command("hello", function (context) {
 
    // display something
    shell.write("Hello world!");
 
    // make sure to end each command properly
    context.end();
});
 
shell.command("exit", function (context) {
 
    // exit the application
    shell.exit();
});
 
// start prompting for commands
shell.prompt();

Commands accept arguments and options. Both of these get parsed with minimist and are passed to the callback with command context object:

shell.command("echo", function (context) {
    // retrieve command arguments and options (parsed with minimist)
    var args = context.args;
    var opts = context.options;
 
    // show arguments
    shell.write(args, opts);
 
    // end the command
    context.end();
});

Minish makes it simple to ask for input. It can also ask for passwords discretely:

// ask for a password without revealing its characters:
shell.password("Type a secret password:", function (password) {
 
    // ask whether to show the password
    shell.question("Type 'show' to display the password:", function (reply) {
 
        // show the password if needed
        if (reply === "show") shell.write("The password was:", password);
    });
});

Let's try something more complicated:

var shell = require('minish');
 
// 'hello' command
shell.command("hello", function (context) {
    // write to shell's output (the console by default)
    shell.write("Hello world!");
 
    // end the command
    context.end();
});
 
// 'echo' command
shell.command("echo", "Shows arguments and options", function (context) {
    // retrieve command arguments and options (parsed with minimist)
    var args = context.args;
    var opts = context.options;
 
    // show arguments
    shell.write(args, opts);
 
    // end the command
    context.end();
});
 
// 'ask' command
shell.command("ask", "Asks a question", function (context) {
 
    // ask a question and await answer
    shell.question("What's your name?", function (reply) {
 
        // show reply
        shell.write("Your name is:", reply);
 
        context.end();
    });
});
 
// 'passwd' command
shell.command("passwd", "Asks for a password without revealing its characters", function (context) {
 
    // aks for a password
    shell.password("Type a secret password:", function (password) {
 
        // ask whether to show the password
        shell.question("Type 'show' to display the password:", function (reply) {
 
            // show the password if needed
            if (reply === "show") shell.write("The password was:", password);
 
            context.end();
        });
    });
});
 
// 'quit' and 'exit' commands
shell.command(["quit", "exit"], "Exits the example", function (context) {
    shell.write("Ending...");
    shell.exit();
});
 
// override default 'command not supported' handler
shell.command("_", function (context) {
    context.fail("Command '" + context.command + "' not supported");
});
 
// display a welcome message
shell.write("Welcome to minish.");
shell.write("Type 'help' to see a list of available commands.");
 
// start prompting for commands
shell.prompt("");

Check out minish TypeScript typings for a quick overview of the rest of available API.

Readme

Keywords

Package Sidebar

Install

npm i minish

Weekly Downloads

8

Version

0.5.4

License

MIT

Last publish

Collaborators

  • lukaaash