clintish

event driven options parser

npm install clintish
5 downloads in the last week
16 downloads in the last month

clintish

Command line helper and arguments parser, based upon clint and primeish

Installing

npm install clintish colors --save

Use

var clint = require('clintish')();
require('colors');

var bool = function(value){
    // a boolean helper if a value is present
    if (value === 'no' || value === 'false'){
        return false;
    }
    if (value === 'yes' || value === 'true'){
        return true;
    }
    return value;
};

// register full cmd line arg and aliases with some help text
clint.command('--auto', '-a', 'Watch for changes in less files, recompiles main', bool);
clint.command('--now', '-n', 'Do not keep running, instead - compile now and quit', bool);
clint.command('--no-compress', '-nc', 'Disable compression settings for less output, enabled by default, eg. ' + '--no-compress'.green + ' to disable', bool);

// register actual args
clint.command('--log', '-l', 'Set log level, eg. ' + '-l 3'.green);


var cliHelp = function(){
    // uses command definitions from above
    console.log(clint.help(2, ' : '.grey));
};

// now parser of args
var processArguments = function(args){
    args = args || process.argv.splice(2);

    var options = {
        compress: true,
        auto: false,
        now: false,
        log: 0
    };

    if (!args.length){
        // call some cli helper.
        return cliHelp();
    }

    clint.on('command', function(name, value){
        switch (name){
            case '--no-compress':
                options.compress = false;
                break;
            case '--now':
                options.now = true;
                break;
            case '--auto':
                options.auto = true;
                break;
            case '--log':
                options.log = Number(value);
        }
    });

    clint.on('complete', function(){
        runApp(options);
    });

    clint.parse(args);
};

processArguments();

That's about all you need to get going and develop node.js CLI apps.

npm loves you