Generate shell completion scripts from a JSON description of a command.
You can use the CLI to generate scripts:
npm i -g @completely/cli
completely --shell bash completion.json > completion.sh
(Only bash and zsh are supported at the moment.)
For example, given this JSON description:
{
"command": "my-command",
"subcommands": [
{
"command": "draw",
"args": [],
"flags": [{
"type": "string",
"name": "color",
"completion": {
"type": "oneOf",
"values": ["red", "green", "blue"]
}
}]
}
]
}
If you generate a completion.sh
file and source it, you'll get some completion suggestions:
source completion.sh
my-command # pressing <tab> will complete "draw"
my-command draw --color # pressing <tab><tab> will suggest "red", "green" and "blue"
You can also use the library directly:
npm i @completely/bash-generator
import { generate } from '@completely/bash-generator'
import completionSpec from './completion.json'
const script = generate(completionSpec)
console.log(script)
You can check the spec package to learn more about how to describe a command with a JSON file. Ideally you wouldn't need to do this manually, since this JSON is meant to be an internal representation generated by other means.