# base-cli [![NPM version](https://img.shields.io/npm/v/base-cli.svg?style=flat)](https://www.npmjs.com/package/base-cli) [![NPM downloads](https://img.shields.io/npm/dm/base-cli.svg?style=flat)](https://npmjs.org/package/base-cli) [![Build Status](https://img.shields.io/travis/node-base/base-cli.svg?style=flat)](https://travis-ci.org/node-base/base-cli) > Plugin for base-methods that maps built-in methods to CLI args (also supports methods from a few plugins, like 'base-store', 'base-options' and 'base-data'. You might also be interested in [base-config](https://github.com/node-base/base-config). ## Install Install with [npm](https://www.npmjs.com/): ```sh $ npm install base-cli --save ``` Adds a `cli` method to `base` for mapping parsed command line arguments existing [base](https://github.com/node-base/base) methods or custom functions. The goal is to simplify the process of settings up command line logic for your [base](https://github.com/node-base/base) application. ## Usage ```js var cli = require('base-cli'); var Base = require('base'); var app = new Base(); // register the plugin app.use(cli()); ``` ## API This adds a `cli` object to [base](https://github.com/node-base/base) with the following (chainable) methods (`base.cli.*`): * `.map()` - [.map](#map): add mappings from command line flags/options to custom functions or `base` methods * `.alias()` - [.alias](#alias): similar to `map` but creates simple aliases. For example, `alias('show', 'get')` would invoke the `.get()` method when `--show` is passed on the command line * `.process()` - [.process](#process): once all mappings are defined, pass `argv` to `.process()` to iterate over the mappings, passing `argv` as context. ## Example ```js var argv = require('minimist')(process.argv.slice(2)); var expand = require('expand-args'); var cli = require('base-cli'); var Base = require('base'); var app = new Base(); app.use(cli()); app.cli .map('get', function(key, val) { app.get(key, val); }) .map('set', function(key, val) { app.set(key, val); }) app.cli.process(expand(argv), function(err) { if (err) throw err; }); // command line args: // // '--set=a:b --get=a' // // prints: // // 'a' // ``` ## Commands The following commands are currently supported. ## Related projects Other useful [base](https://github.com/node-base/base) plugins: * [base-config](https://www.npmjs.com/package/base-config): base-methods plugin that adds a `config` method for mapping declarative configuration values to other 'base'… [more](https://www.npmjs.com/package/base-config) | [homepage](https://github.com/node-base/base-config) * [base-data](https://www.npmjs.com/package/base-data): adds a `data` method to base-methods. | [homepage](https://github.com/jonschlinkert/base-data) * [base-generators](https://www.npmjs.com/package/base-generators): Adds project-generator support to your `base` application. | [homepage](https://github.com/node-base/base-generators) * [base-plugins](https://www.npmjs.com/package/base-plugins): Upgrade's plugin support in base applications to allow plugins to be called any time after… [more](https://www.npmjs.com/package/base-plugins) | [homepage](https://github.com/node-base/base-plugins) * [base-task](https://www.npmjs.com/package/base-task): base plugin that provides a very thin wrapper around [https://github.com/doowb/composer](https://github.com/doowb/composer) for adding task methods to… [more](https://www.npmjs.com/package/base-task) | [homepage](https://github.com/node-base/base-task) * [base](https://www.npmjs.com/package/base): base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… [more](https://www.npmjs.com/package/base) | [homepage](https://github.com/node-base/base) ## Contributing Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/base-cli/issues/new). ## Building docs Generate readme and API documentation with [verb](https://github.com/verbose/verb): ```sh $ npm install verb && npm run docs ``` Or, if [verb](https://github.com/verbose/verb) is installed globally: ```sh $ verb ``` ## Running tests Install dev dependencies: ```sh $ npm install -d && npm test ``` ## Author **Jon Schlinkert** * [github/jonschlinkert](https://github.com/jonschlinkert) * [twitter/jonschlinkert](http://twitter.com/jonschlinkert) ## License Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert). Released under the [MIT license](https://github.com/node-base/base-cli/blob/master/LICENSE). *** _This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on April 14, 2016._