opt-cli
Execute CLI Statements based upon Opt-In / Opt-Out Rules.
Last updated 10 years ago by ta2edchimp .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install opt-cli 
SYNC missed versions from official npm registry.

opt-cli

Execute CLI Statements based upon opt-in / out-out Rules.

version Build Status Code Coverage Dependencies status

MIT License downloads semantic-release PRs Welcome All Contributors

Installation

Simply install locally as a development dependency to your project's package:

npm install --save-dev opt-cli

Intended usage

Opting in/out of a configured tasks, best use case is for ghooks. This discussion is the main motivation behind this module.

You can check out the eslint-find-new-rules/package.json for reference.

opt --in

"config": {
  "ghooks": {
    "pre-commit": "opt --in pre-commit --exec 'npm run validate'"
  }
},

While commiting, npm run validate will not be executed by default. However, one can opt in by creating a .opt-in file in the root of the project, with the content pre-commit

.opt-in

Each line in the .opt-in file, is the keyword used after the opt --in rule.

So for the above example, it's pre-commit

cat .opt-in
# "ghooks": {
#   "pre-commit": "opt --in pre-commit --exec 'npm run validate'"
# }
pre-commit # the keyword used after the opt --in command

opt --out

opt --out works exactly, the opposite way of opt --in.

"config": {
  "ghooks": {
    "pre-commit": "opt --out pre-commit --exec 'npm run validate'"
  }
},

In this case, npm run validate will be executed before any changes can be commited. In order to opt out, you have to create a .opt-out file in the root of the project, with the content pre-commit

.opt-out

Similar to .opt-in file, each line in .opt-out file, is the keyword used after the opt --out rule.

So for the above example, it's pre-commit

cat .opt-out
# "ghooks": {
#   "pre-commit": "opt --out pre-commit --exec 'npm run validate'"
# }
pre-commit # the keyword used after the opt --out command
  • don't forget to update .gitignore to ignore this file.
  • opt-in, opt-out files can contain multiple rules
  • every line must contain only a single rule.
  • # can be used to comment any rule.

Use As Library

You may also include opt-cli as a library:

var opt = require( 'opt-cli' );

Given the example setup from above, usage would be as follows:

opt.testOptIn( 'pre-commit' ) === true
opt.testOptOut( 'pre-push' ) === true

Using opt.getExplicitOpts() you would receive:

{
  'pre-commit': true,
  'pre-push': false
}

Advanced Usage

Rules to opt-into or opt-out of can also be specified using ...

  • ... an in or out array of a package.json's config.opt field:
"config": {
  "opt": {
    "in": [ "pre-commit" ],
    "out": [ "pre-push" ]
  }
},
  • ... the environment variables OPT_IN and OPT_OUT:
# Delimit multiple rules with ":" on *nix / ";" on Win
export OPT_IN="pre-commit"
export OPT_OUT="pre-push"

Contributors


Kent C. Dodds

???? ????

Guilherme J. Tramontina

????

Andreas Windt

???? ???? ⚠️

Sarbbottam Bandyopadhyay

????

Suhas Karanth

???? ????

This project follows the all-contributors specification (emoji key). Contributions of any kind welcome!

Special thanks to @kentcdodds for encouraging to engage in oss, for the wonderful resources (check out the Egghead videos!) and — together with gtramontina — for coming up with the original idea to this module!

Current Tags

  • 1.6.0                                ...           latest (8 years ago)

12 Versions

  • 1.6.0                                ...           8 years ago
  • 1.5.2                                ...           9 years ago
  • 1.5.1                                ...           10 years ago
  • 1.5.0                                ...           10 years ago
  • 1.4.2                                ...           10 years ago
  • 1.4.1                                ...           10 years ago
  • 1.4.0                                ...           10 years ago
  • 1.3.0                                ...           10 years ago
  • 1.2.0                                ...           10 years ago
  • 1.1.1                                ...           10 years ago
  • 1.1.0                                ...           10 years ago
  • 1.0.0                                ...           10 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 1
Dependencies (4)
Dev Dependencies (13)
Dependents (1)

Copyright 2013 - present © cnpmjs.org | Home |