Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/muniftanjim/oclif-plugin-completion
oclif plugin for generating shell completions
https://github.com/muniftanjim/oclif-plugin-completion
bash fish oclif oclif-plugin shell shell-completion zsh
Last synced: 10 days ago
JSON representation
oclif plugin for generating shell completions
- Host: GitHub
- URL: https://github.com/muniftanjim/oclif-plugin-completion
- Owner: MunifTanjim
- License: mit
- Created: 2020-05-25T06:52:48.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-02-16T19:32:39.000Z (over 1 year ago)
- Last Synced: 2024-10-11T08:07:22.524Z (27 days ago)
- Topics: bash, fish, oclif, oclif-plugin, shell, shell-completion, zsh
- Language: TypeScript
- Homepage:
- Size: 130 KB
- Stars: 10
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![oclif Plugin](https://img.shields.io/badge/oclif-plugin-brightgreen?style=for-the-badge)](https://oclif.io)
[![Version](https://img.shields.io/npm/v/oclif-plugin-completion?style=for-the-badge)](https://npmjs.org/package/oclif-plugin-completion)
[![License](https://img.shields.io/npm/l/oclif-plugin-completion?style=for-the-badge)](https://github.com/MunifTanjim/oclif-plugin-completion/blob/master/LICENSE)# oclif Plugin: completion
oclif plugin for generating shell completions
- [oclif Plugin: completion](#oclif-plugin-completion)
- [Completion Features](#completion-features)
- [Supported Shells](#supported-shells)
- [Commands](#commands)# Completion Features
Consider the following `dummy` CLI:
```sh
Usage: dummy [OPTION...]Commands:
open open a dummy (as read-only or read-write)
save save a dummy
search search a dummyOptions (open):
-i, --id dummy id
-f, --file path to dummy file
-d, --dir path to dummy directory (default: ./dummies)
-v, --verbose boolean flagOptions (save):
-n, --name dummy name
-a, --age dummy age
-t, --tag dummy tag, can be multiple (a/b/c/d)
-f, --file path to dummy file
-d, --dir path to dummy directory (default: ./dummies)
-o, --overwrite boolean flag
-v, --verbose boolean flagOptions (search):
-n, --name dummy name
-a, --age dummy age
-t, --tag dummy tag, can be multiple (a/b/c/d)
-v, --verbose boolean flag
```Running on the current directory with tree:
```sh
|- dir-one/
| |- 042.dummy-with-id-042.json
|- dir-two/
|- dummies/
| |- 109.dummy-with-id-109.json
| |- 110.dummy-with-id-110.json
| |- 111.dummy-with-id-111.json
|- file-one.txt
|- file-two.txt
```## Features Description
**File Path completion**:
Completion will suggest the files on disk matching glob pattern.
**Directory Path completion**:
Completion will suggest the directories on disk matching glob pattern.
**Dynamic Runtime completion**:
Completion will generate the suggestion based on state of runtime environment and/or configuration.
## Features Examples
| Feature | Input | Output |
| -------------------------- | ------------------------------------ | ---------------------------- |
| File Path completion | `dummy open --file=./dir/one/` | `042.dummy-with-id-042.json` |
| Directory Path completion | `dummy open --dir ./di` | `dir-one dir-two` |
| Dynamic Runtime completion | `dummy open --id ` | `109 110 111` |
| Dynamic Runtime completion | `dummy open -d ./dir-one --id ` | `042` |## Feature Support Matrix
| :+1: | :-1: | :grey_exclamation: | :bug: | :heavy_check_mark: | :heavy_minus_sign: | :x: |
| --------- | ----------- | ------------------ | ----- | ------------------ | --------------------- | --------------- |
| Supported | Unsupported | Unknown | Bug | Implemented | Partially Implemented | Not Implemented || oclif | Feature | Example | Bash | Zsh | Fish |
| ---------- | ---------------------------- | ---------------------------------- | ----------------------- | ----------------------- | ----------------------- |
| :+1: | Positional argument | `ro` | :grey_exclamation: :x: | :+1: :heavy_check_mark: | :grey_exclamation: :x: |
| :+1: | Basic Long | `--name john --age 42 --overwrite` | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: |
| :+1: | Alternate Long | `--name=john --age=42` | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: |
| :+1: | Basic Short | `-n john -a 42 -o` | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: |
| :+1: | Alternative Short | `-njohn -a42` | :+1: :x: | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: |
| :+1: | Stacking Short | `-ov` | :grey_exclamation: :x: | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: |
| :+1: | Stacking Short with argument | `-ova 42` | :grey_exclamation: :x: | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: |
| :+1: | Options / Enum | `--tag a` | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: | :+1: :heavy_check_mark: |
| :+1: :bug: | Multiple | `-t c --tag d` | :+1: :heavy_minus_sign: | :+1: :heavy_minus_sign: | :+1: :heavy_minus_sign: |
| :-1: | File Path completion | `--file ...` | :+1: :heavy_minus_sign: | :+1: :x: | :+1: :heavy_minus_sign: |
| :-1: | Directory Path completion | `--dir ...` | :+1: :heavy_minus_sign: | :+1: :x: | :+1: :heavy_minus_sign: |
| :-1: | Dynamic Runtime completion | `--dir ./dummies --id 111` | :+1: :x: | :+1: :x: | :+1: :x: |# Supported Shells
## Bash
Reference: [Bash Completion](https://github.com/scop/bash-completion)
You need to have `bash-completion` package installed on your system.
### Bash Usage
You can enable completion for Bash using various methods. A few of them are mentioned below:
**vanilla (.bashrc)**:
Add the following line in your `.bashrc` file:
```sh
eval "$(dummy completion:generate --shell bash);"
```**vanilla (completions directory)**:
Run the following command:
```sh
dummy completion:generate --shell bash | tee ~/.local/share/bash-completion/completions/dummy
```Depending on you system, the completion script can also be put into one of these directories:
- `${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion/completions` (linux/macos)
- `/usr/local/share/bash-completion/completions` (macos)
- `/usr/share/bash-completion/completions` (linux)## Zsh
Reference: [Zsh Completion System](http://zsh.sourceforge.net/Doc/Release/Completion-System.html)
### Zsh Usage
You can enable completion for Zsh using various methods. A few of them are mentioned below:
**vanilla (.zshrc)**:
Add the following line in your `.zshrc` file:
```sh
eval "$(dummy completion:generate --shell zsh); compdef _dummy dummy;"
```**vanilla (site-functions directory)**:
Run the following command:
```sh
dummy completion:generate --shell zsh | tee "$(echo ${FPATH} | tr ':' '\n' | grep site-functions | head -n1)/_dummy"
```The completion script can also be put into one of the directories present in `$FPATH` variable:
```sh
echo $FPATH
```[**zinit**](https://github.com/zdharma/zinit):
Run the following commands:
```sh
dummy completion:generate --shell zsh > ~/.local/share/zsh/completions/_dummy
zinit creinstall ~/.local/share/zsh/completions
```## Fish
Reference: [Fish Completion](https://fishshell.com/docs/current/cmds/complete.html)
### Fish Usage
Reference: [Where to put completions](https://fishshell.com/docs/current/index.html#where-to-put-completions)
You can enable completion for Fish using various methods. A few of them are mentioned below:
**vanilla (completions directory)**:
Run the following command:
```sh
dummy completion:generate --shell fish | tee ~/.config/fish/completions/dummy.fish
```# Commands
- [`dummy completion`](#dummy-completion)
- [`dummy completion:generate`](#dummy-completiongenerate)
- [`dummy completion:generate:alias ALIAS`](#dummy-completiongeneratealias-alias)## `dummy completion`
Generate shell completion script
```
USAGE
$ dummy completionOPTIONS
-s, --shell=bash|fish|zsh (required) Name of shellDESCRIPTION
Run this command to see instructions for your shell.EXAMPLE
$ dummy completion --shell zsh
```_See code: [src/commands/completion/index.ts](https://github.com/MunifTanjim/oclif-plugin-completion/blob/0.6.0/src/commands/completion/index.ts)_
## `dummy completion:generate`
Generates completion script
```
USAGE
$ dummy completion:generateOPTIONS
-s, --shell=bash|fish|zsh (required) Name of shellDESCRIPTION
Run the "completion" command to see instructions about how to use the script generated by this command.EXAMPLE
$ dummy completion:generate --shell zsh
```_See code: [src/commands/completion/generate/index.ts](https://github.com/MunifTanjim/oclif-plugin-completion/blob/0.6.0/src/commands/completion/generate/index.ts)_
## `dummy completion:generate:alias ALIAS`
Generates completion script for alias
```
USAGE
$ dummy completion:generate:alias ALIASARGUMENTS
ALIAS name of the aliasOPTIONS
-s, --shell=bash|fish (required) Name of shellDESCRIPTION
This needs the completion script for the main command to be present.Check the "completion:generate" command.
```_See code: [src/commands/completion/generate/alias.ts](https://github.com/MunifTanjim/oclif-plugin-completion/blob/0.6.0/src/commands/completion/generate/alias.ts)_