Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fvictorio/completely

Generate shell completion scripts from a JSON description of a command.
https://github.com/fvictorio/completely

autocomplete cli completion shell typescript

Last synced: 3 months ago
JSON representation

Generate shell completion scripts from a JSON description of a command.

Awesome Lists containing this project

README

        

# completely

Generate shell completion scripts from a JSON description of a command.

## Usage

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:

```json
{
"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:

```bash
source completion.sh
my-command # pressing will complete "draw"
my-command draw --color # pressing will suggest "red", "green" and "blue"
```

You can also use the library directly:

```
npm i @completely/bash-generator
```

```typescript
import { generate } from '@completely/bash-generator'
import completionSpec from './completion.json'

const script = generate(completionSpec)
console.log(script)
```

## JSON description

You can check the [spec package](packages/spec) 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.