# 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'.

Latest version **0.5.0** (published 2016-04-14) · MIT license · 0 weekly downloads

## Install

```sh
npm install base-cli
pnpm add base-cli
yarn add base-cli
bun add base-cli
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.5.0 |
| Published | 2016-04-14 |
| First published | 2015-10-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=0.10.0 |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 23 |
| Author | Jon Schlinkert |
| Maintainers | jonschlinkert |
| Keywords | app, application, arg, args, base, baseplugin, cache, cli, command, command-line, config, data, extend, flag, flags, line, merge, method, methods, option, options, opts, plugin, store, terminal |

## Links

- npm: https://www.npmjs.com/package/base-cli
- Repository: https://github.com/node-base/base-cli
- Issues: https://github.com/node-base/base-cli/issues
- npm.io page: https://npm.io/package/base-cli

## Dependencies (2)

- [base-argv](https://npm.io/package/base-argv.md) ^0.4.2
- [base-config](https://npm.io/package/base-config.md) ^0.5.2

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 0.5.0 (latest) — 2016-04-14
- 0.4.26 — 2016-03-25
- 0.4.25 — 2016-03-25
- 0.4.24 — 2016-03-09
- 0.4.23 — 2016-03-07
- 0.4.22 — 2016-03-05
- 0.4.21 — 2016-03-05
- 0.4.20 — 2016-03-04
- 0.4.19 — 2016-03-04
- 0.4.18 — 2016-03-04
- 0.4.17 — 2016-03-02
- 0.4.16 — 2016-02-23
- 0.4.15 — 2016-02-19
- 0.4.14 — 2016-02-17
- 0.4.13 — 2016-02-16
- … 18 more at https://npm.io/package/base-cli/versions

## README

# 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._

---
_Source: https://npm.io/package/base-cli · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
