Export commander command as a Fig spec
npm install @fig/complete-commander---
``ts`
generateCompletionSpec(command[, options]): stringcommand
Generate a completion spec from the provided command and return it a string.
- : a commander.Command objectoptions
- : an object containing the following optional properties:figSpecCommandName
- : specify the name of the command used to generate the fig spec (see). It defaults to 'generate-fig-spec'
`ts`
addCompletionSpecCommand(command): void$CLI generate-fig-spec
Add a new Subcommand to the provided command that will print a spec generated when invoked through .command
- : a commander.Command object
js
import { program } from 'commander'
import { generateCompletionSpec } from '@fig/complete-commander'program
.name('babel')
.description('The compiler for writing next generation JavaScript')
.version('7.16.0')
.argument('', 'file to compile')
// Do not generate if production env
if (process.env.NODE_ENV === 'development') {
const spec = generateCompletionSpec(program) // write the generated spec to a file or print it to the console
}
`$3
You can also provide a custom command that generates a spec file when called. For example, the program below generates the Fig spec when eslint generate-fig-spec is run from a Terminal.`js
import { program } from 'commander'
import { addCompletionSpecCommand } from '@fig/complete-commander'program
.name('eslint')
.description('Find and fix problems in your JavaScript code')
.version('8.0.0')
.argument('', 'file to lint')
if (process.env.NODE_ENV === 'development') {
addCompletionSpecCommand(program)
}
program.parse()
`> _NOTE: the command can be called whatever you want, but if you specify a name different from
'generate-fig-spec' you should set the figSpecCommandName option._Options for
generateCompletionSpec
$3
When creating a custom command to generate a Fig spec whose name is different from 'generateCompletionSpec' you want to avoid including it in the generated file. This option helps you do that.`js
program
.name('eslint')
.description('Find and fix problems in your JavaScript code')
.version('8.0.0')
.argument('', 'file to lint')if (process.env.NODE_ENV === 'development') {
program
.command('createSpec') // this command will not be included in the generated spec
.description('Generate a fig spec')
.action(() => {
generateCompletionSpec(program, { figSpecCommandName: 'createSpec' })
})
}
program.parse()
`---
_p.s. this tool has been written for
commander@8`, but should work in the most of the previous versions too._