Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/keithwhor/cmnd
Command Line Interface Utility for Node.js using ES6 idioms
https://github.com/keithwhor/cmnd
Last synced: 5 days ago
JSON representation
Command Line Interface Utility for Node.js using ES6 idioms
- Host: GitHub
- URL: https://github.com/keithwhor/cmnd
- Owner: keithwhor
- License: mit
- Created: 2016-03-25T23:59:59.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-09-25T20:08:36.000Z (about 1 year ago)
- Last Synced: 2024-08-09T13:16:40.760Z (3 months ago)
- Language: JavaScript
- Homepage:
- Size: 28.3 KB
- Stars: 165
- Watchers: 7
- Forks: 11
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CMND
## Command Line Interface Utility for Node.jsCMND is a package that lets you easily create CLI tools in Node.js.
It's also simple to create associated manual (help) pages for each command.# Usage
To use CMND, first install it in your Node project with `npm install cmnd --save`.
Next, modify your project's `package.json` to include:
```
"bin": {
"mycli": "./cli.js"
}
```Where `mycli` is the intended name of your command in the CLI.
Now create a file: `./cli.js` and folder `./commands`:
```javascript
#!/usr/bin/env node'use strict';
const { CommandLineInterface } = require('cmnd');
const CLI = new CommandLineInterface();CLI.load(__dirname, './commands');
CLI.run(process.argv.slice(2));
```Finally, populate your commands directory with your commands, here's an example
file: `./commands/example.js````javascript
const { Command } = require('cmnd');class ExampleCommand extends Command {
constructor() {
// Name of the command
super('example');
}help () {
return {
description: 'An example command',
args: ['example_arg1', 'example_arg2'],
flags: {flag: 'An example flag'},
vflags: {vflag: 'An example verbose flag'}
};
}async run (params) {
// Run code here.
// To throw an error, throw new Error('an error')
// To return a result that gets printed to console, return notUndefinedVar;
}}
module.exports = ExampleCommand;
```## Creating manual pages (help)
View all the commands available to your CLI with `mycli help` where `mycli` is
the intended name of your command in the CLI. To modify help information,
change the return value of the `help()` method for each command.## Creating Subcommands
To subclass a command (i.e. `mycli command_name:sub_name`) simply change the `contructor()`
method in your command to the following:```javascript
constructor () {super('command_name', 'sub_name');
}
```## Running your commands
Each command has a `run()` method which takes three arguments: `args`, `flags`,
and `vflags`.### args
`args` is the array of arguments, passed before any flags.
i.e. `mycli command alpha beta` would populate `args` with `['alpha', 'beta']`
### flags
`flags` is an object containing any flags (prefixed with `-`), where each entry
is an array of values passed after the flagi.e. `mycli command -f my flag` would populate `vflags` with `{f: ['my', 'flag']}`
### vflags
`vflags` works identically to flags, but with "verbose flags" (prefixed
with `--`).### Additional notes
All argument arrays passed to `args` or any `flags` or `vflags` options will
be separated by spaces, *except in the case of quotation marks*. Use
quotation marks to specify an argument with spaces in it.i.e. `mycli command -f "argument one" argument_two`
## Acknowledgements
Thanks for checking out the library! Feel free to submit issues or PRs if you'd
like to see more features.Follow me on Twitter, [@keithwhor](http://twitter.com/keithwhor).
Feel free to check out more of [my GitHub projects](http://github.com/keithwhor).