https://github.com/cliffano/bagofcli
A library for defining CLI commands as JSON configuration
https://github.com/cliffano/bagofcli
cli nodejs
Last synced: 12 months ago
JSON representation
A library for defining CLI commands as JSON configuration
- Host: GitHub
- URL: https://github.com/cliffano/bagofcli
- Owner: cliffano
- License: mit
- Created: 2013-06-01T03:25:56.000Z (about 13 years ago)
- Default Branch: main
- Last Pushed: 2025-02-01T04:29:46.000Z (over 1 year ago)
- Last Synced: 2025-06-21T02:51:58.880Z (about 1 year ago)
- Topics: cli, nodejs
- Language: JavaScript
- Homepage:
- Size: 13.8 MB
- Stars: 2
- Watchers: 2
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://github.com/cliffano/bagofcli/actions?query=workflow%3ACI)
[](https://snyk.io/test/github/cliffano/bagofcli)
[](https://libraries.io/github/cliffano/bagofcli)
[](https://coveralls.io/r/cliffano/bagofcli?branch=master)
[](http://www.npmjs.com/package/bagofcli)
Bag Of CLI
----------
Bag Of CLI contains CLI utility functions.
This is handy when you want to have a set of common CLI commands with descriptions, options, help, and example usages, by just defining them in a JSON file. Bag of CLI essentially allows you to define those info in a configuration file instead of code.
Installation
------------
npm install bagofcli
or as a dependency in package.json file:
"dependencies": {
"bagofcli": "x.y.z"
}
Usage
-----
Commands:
// create conf/commands.json file containing commands configuration
{
"options": [
{ "arg": "-f, --file ", "desc": "This is a global option, applicable to all commands." }
],
"commands": {
"command1": {
"desc": "This is the first command",
"options": [
{ "arg": "-r, --registry ", "desc": "This is a command option, applicable only to command1"}
],
"examples": [
" command1 --registry someregistry"
]
},
"command2": {
"desc": "This is the second command",
"options": [
{ "arg": "-d, --debug", "desc": "This is a command option, applicable only to command2"}
],
"examples": [
" command2 --debug"
]
}
}
}
// setup command handlers
var bag = require('bagofcli');
var actions = {
commands: {
command1: {
action: function (args) {
console.log(args.registry);
}
},
command2: {
action: function (args) {
console.log(args.debug);
}
}
}
};
bag.command(__dirname, actions);
Check out [lib/bagofcli.js](https://github.com/cliffano/bagofcli/blob/master/lib/bagofcli.js) for more utility functions.
Upgrade
-------
From 0.0.x to 0.1.x .
Update commands.json argument validation rules:
* `notEmpty` to `required`
* `isNumeric` to `number`
* `isEmail` to `email`
Check out [iz](http://npmjs.org/package/iz) for available validation rules.
Colophon
--------
[Developer's Guide](https://cliffano.github.io/developers_guide.html#nodejs)
Build reports:
* [Code complexity report](https://cliffano.github.io/bagofcli/complexity/plato/index.html)
* [Unit tests report](https://cliffano.github.io/bagofcli/test/mocha.txt)
* [Test coverage report](https://cliffano.github.io/bagofcli/coverage/c8/index.html)
* [API Documentation](https://cliffano.github.io/bagofcli/doc/jsdoc/index.html)