opt-cli
Execute CLI Statements based upon Opt-In / Out-Out Rules.
Installation
Simply install locally as a development dependency to your project's package:
npm install --save-dev opt-cli
Command Line Usage
The intended usage is within an npm script, for example to opt-in to commit or to opt-out of commit hooks:
"ghooks": {
"precommit": "opt --in precommit --exec \"make test\"",
"prepush": "opt --out prepush --exec \"make lint\"",
}
Given you these files and their content, the hooks above will be executed:
.opt-in
precommit
.opt-out
prepush
Alternatively, you may specify these rules within an npm module's package.json
file:
"config": {
"opt": {
"in": [ "precommit" ],
"out": [ "prepush" ]
}
}
Behavior:
If you specify opt --in
rule then you MUST have the string specified in the .opt-in
file (one rule per file) or in your package.json
's config.opt.in
Array. If you specify an opt --out
then you MUST NOT have the string specified in the .opt-out
file or in your package.json
's config.opt.out
Array, respectively.
The command specified as --exec
optoin would be what to execute in the scenario that it passes the test.
Use As Library
You may also include opt-cli as a library:
var opt = require( 'opt' );
Given the example setup from above, usage would be as follows:
opt.testOptIn( 'precommit' ) === true
opt.testOptOut( 'prepush' ) === true
Using opt.getExplicitOpts()
you would receive:
{
precommit: true,
prepush: false
}
Contributors
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!
TODO