# action-selector

> Select actions from the given configuration

Latest version **1.0.2** (published 2020-07-21) · MIT license · 0 weekly downloads

## Install

```sh
npm install action-selector
pnpm add action-selector
yarn add action-selector
bun add action-selector
```

## Health

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

Positive: no vulnerabilities; high maintenance score.

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

Negative: abandoned.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2020-07-21 |
| First published | 2017-05-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 5.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | Yoshiya Hinosawa |
| Maintainers | kt3k |
| Keywords | cli, util |

## Links

- npm: https://www.npmjs.com/package/action-selector
- Repository: https://github.com/kt3k/action-selector
- Homepage: https://github.com/kt3k/action-selector#readme
- Issues: https://github.com/kt3k/action-selector/issues
- npm.io page: https://npm.io/package/action-selector

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

- 1.0.2 (latest) — 2020-07-21
- 1.0.1 — 2017-06-19
- 1.0.0 — 2017-05-19

## README

# action-selector v1.0.2

![CI](https://github.com/kt3k/action-selector/workflows/CI/badge.svg)
[![codecov](https://codecov.io/gh/kt3k/action-selector/branch/master/graph/badge.svg)](https://codecov.io/gh/kt3k/action-selector)

> Select actions from the given configuration

# Install

    npm install action-selector

# Usage

See the example below:

```js
const { select } = require('action-selector')
const argv = require('minimist')(process.argv.slice(2))

const actions = {
  'action:help': () => showHelpMessage(),
  'action:version': () => showVersionNumber(),
  'action:build': () => buildSomething(),
}

select(actions, {
  help: argv.help || argv._[0] === 'help',
  version: argv.version || argv._[0] === 'version',
  [argv._[0]]: true,
})
.on('action', action => action(argv))
.on('no-action', name => console.log(`No such action: ${name}`))
```

With the above example, the command maps like the below:

```
node command.js --help    # => help action
node command.js help      # => help action
node command.js --version # => version action
node command.js version   # => version action
node command.js build     # => build action
node command.js explode   # => No such action: explode
```

# API

```js
const { select } = require('action-selector')
```

## select(object, config)

- @param {Object} object The object from which the selector look up the action
- @param {Object} config The config by which the selector look up the action
- @return {EventEmitter}

The selector look up the function in `object`.

The rule is:
- Checks each key of `config` from the top
- The first key which has truthy value in `config` is the name of the chosen `action`.
- Then check `action:${actionName}` key in `object`.
- If `action:${actionName}` exists in `object` then that is the action and emits `action` event with it.
- If `action:${actionName}` doesn't exist in `object` then emits `no-action` event with the missing action's name.

# History

- 2017-06-19   v1.0.1   Support node.js v4.


# License

MIT

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