@prostojs/cli-help
v0.0.11
Published
CLI Help Renderer
Downloads
1,865
Readme
CLI Help Renderer
Lightweight and simple cli-help renderer, that supports:
- commands with arguments
- options
- aliases
Install
npm: npm install @prostojs/cli-help
Usage
Here's a dumb example of random CLI that does some operations over package.json file. The intent is to show the capabilities of the cli-help rendere only.
// example.js
const { CliHelpRenderer } = require('@prostojs/cli-help')
const chr = new CliHelpRenderer({
name: 'my-cli',
mark: '›',
})
const commonOptions = [
{
keys: ['output'],
description: 'Output format',
value: 'json|yaml',
},
]
chr.addEntry(
{
command: '',
description: 'Prints package.json file',
options: [...commonOptions],
},
{
command: 'version',
description: 'Prints version property from package.json file',
aliases: ['v'],
},
{
command: 'version set',
description: 'Sets <new-version> as version for package.json file',
aliases: ['vs'],
args: {
'new-version': 'Version value (e.g. "1.0.2")',
},
examples: [{ cmd: '1.0.2', description: 'Sets version to 1.0.2' }],
},
{
command: 'dependencies',
description:
'Prints dependencies property from package.json file. ' +
'Long long detailed description for the command will be wrapped into several lines.',
aliases: ['deps'],
options: [
...commonOptions,
{
keys: ['peer', 'P'],
description: 'Include peerDependencies',
},
{
keys: ['dev', 'D'],
description: 'Include devDependencies',
},
{
keys: ['d'],
description: 'Include dependencies',
},
{
keys: ['all', 'a'],
description:
'Include devDependencies, peerDependencies and dependencies. ' +
'Long long detailed description for the option will be wrapped into several lines.',
},
],
examples: [
{
cmd: '-PD',
description:
'Prints peer and dev dependencies. ' +
'Long long comment for the example with the detailed explanation of its effect. '.repeat(
2
),
},
{ cmd: '-d', description: 'Prints dependencies' },
],
},
{
command: 'dependencies:add',
aliases: ['dependencies:i', 'dependencies:install'],
description: 'Adds a new dependency',
options: [
{
keys: ['dev', 'D'],
description: 'Add dependency as a dev depenency',
},
{
keys: ['peer', 'P'],
description: 'Add dependency as a peer depenency.',
},
],
args: {
'npm-pkg': 'npm-package name (e.g. "vue")',
version: 'package version (e.g. "^3.0.0")',
},
examples: [
{
description: 'Installs vue version ^3.0.0',
cmd: 'vue ^3.0.0 -D',
},
],
},
{
command: 'dependencies:delete',
aliases: ['dependencies:del'],
description: 'Deletes a dependency',
args: {
'npm-pkg': 'npm-package name (e.g. "vue")',
},
examples: [
{
description: 'Deletes vue dependency',
cmd: 'vue',
},
],
}
)
// printing help based on process.argv command
chr.print(process.argv.slice(2).join(' ') || '', true)
The example above will result in the following output:
node ./example.js
node ./example.js dependencies
node ./example.js deps:add
Options
chr.print('', true) // for root command tree and colored
chr.print('', false) // for root command tree and without colors
chr.print('deps') // for deps command tree and without colors
chr.render('deps', 100, false) // render help for fix command tree,
// max width = 100 columns, no colors
// returns string[]