Skip to content

Commit d6e847c

Browse files
committed
update completions example
1 parent 2ff4448 commit d6e847c

File tree

4 files changed

+98
-18
lines changed

4 files changed

+98
-18
lines changed

examples/completions/README.md

Lines changed: 50 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ name: cli
2424
help: Sample application with bash completions
2525
version: 0.1.0
2626

27+
# All commands and flags will be automatically used in the completions script
2728
commands:
2829
- name: completions
2930
help: |-
@@ -33,6 +34,9 @@ commands:
3334
- name: download
3435
alias: d
3536
help: Download a file
37+
38+
# Adding custom completions for a command. In this case, typing
39+
# `cli download <TAB>` will suggest files.
3640
completions:
3741
- <file>
3842

@@ -47,6 +51,14 @@ commands:
4751
- long: --force
4852
short: -f
4953
help: Overwrite existing files
54+
- long: --handler
55+
arg: command
56+
57+
# The allowed flag arg whitelist will be added automatically. In this case,
58+
# typing `cli download --handler <tab>` will suggest curl or wget
59+
allowed:
60+
- curl
61+
- wget
5062

5163
examples:
5264
- cli download example.com
@@ -59,20 +71,36 @@ commands:
5971
- name: upload
6072
alias: u
6173
help: Upload a file
74+
75+
# Add directories and users to the suggested completions.
6276
completions:
6377
- <directory>
6478
- <user>
79+
6580
args:
6681
- name: source
6782
required: true
6883
help: File to upload
6984

85+
# The allowed argument whitelist will be added automatically. In this case
86+
# typing `cli upload <TAB>` will suggest these files.
87+
allowed:
88+
- README.md
89+
- CHANGELOG.md
90+
7091
flags:
7192
- long: --user
7293
short: -u
7394
arg: user
7495
help: Username to use for logging in
7596
required: true
97+
98+
# Adding completions to a flag with an argument will add it to the suggested
99+
# words list. In this case typing `cli upload --user <TAB>` will suggest
100+
# users.
101+
completions:
102+
- <user>
103+
76104
- long: --password
77105
short: -p
78106
arg: password
@@ -165,25 +193,37 @@ Options:
165193
### `$ ./cli completions`
166194

167195
```shell
168-
#!/usr/bin/env bash
196+
# cli completion -*- shell-script -*-
169197

170198
# This bash completions script was generated by
171199
# completely (https://github.com/dannyben/completely)
172200
# Modifying it manually is not recommended
173-
_cli_completions() {
174-
local cur=${COMP_WORDS[COMP_CWORD]}
175-
local comp_line="${COMP_WORDS[@]:1}"
176201

177-
case "$comp_line" in
202+
_cli_completions() {
203+
local cur compline
204+
_init_completion -s || return
205+
cur=${COMP_WORDS[COMP_CWORD]}
206+
compline="${COMP_WORDS[@]:1:$COMP_CWORD-1}"
207+
208+
case "$compline" in
209+
'download'*'--handler') COMPREPLY=($(compgen -W "curl wget" -- "$cur")) ;;
210+
'upload'*'--user') COMPREPLY=($(compgen -A user -- "$cur")) ;;
178211
'completions'*) COMPREPLY=($(compgen -W "--help -h" -- "$cur")) ;;
179-
'download'*) COMPREPLY=($(compgen -A file -W "--force --help -f -h" -- "$cur")) ;;
180-
'upload'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u" -- "$cur")) ;;
181-
''*) COMPREPLY=($(compgen -W "--help --version -h -v completions download upload" -- "$cur")) ;;
212+
'd'*'--handler') COMPREPLY=($(compgen -W "curl wget" -- "$cur")) ;;
213+
'upload'*'-u') COMPREPLY=($(compgen -A user -- "$cur")) ;;
214+
'download'*) COMPREPLY=($(compgen -A file -W "--force --handler --help -f -h" -- "$cur")) ;;
215+
'u'*'--user') COMPREPLY=($(compgen -A user -- "$cur")) ;;
216+
'upload'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u CHANGELOG.md README.md" -- "$cur")) ;;
217+
'u'*'-u') COMPREPLY=($(compgen -A user -- "$cur")) ;;
218+
'd'*) COMPREPLY=($(compgen -A file -W "--force --handler --help -f -h" -- "$cur")) ;;
219+
'u'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u CHANGELOG.md README.md" -- "$cur")) ;;
220+
*) COMPREPLY=($(compgen -W "--help --version -h -v completions d download u upload" -- "$cur")) ;;
182221
esac
183-
}
184-
222+
} &&
185223
complete -F _cli_completions cli
186224

225+
# ex: filetype=sh
226+
187227

188228
```
189229

examples/completions/src/bashly.yml

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ name: cli
22
help: Sample application with bash completions
33
version: 0.1.0
44

5+
# All commands and flags will be automatically used in the completions script
56
commands:
67
- name: completions
78
help: |-
@@ -11,6 +12,9 @@ commands:
1112
- name: download
1213
alias: d
1314
help: Download a file
15+
16+
# Adding custom completions for a command. In this case, typing
17+
# `cli download <TAB>` will suggest files.
1418
completions:
1519
- <file>
1620

@@ -25,6 +29,14 @@ commands:
2529
- long: --force
2630
short: -f
2731
help: Overwrite existing files
32+
- long: --handler
33+
arg: command
34+
35+
# The allowed flag arg whitelist will be added automatically. In this case,
36+
# typing `cli download --handler <tab>` will suggest curl or wget
37+
allowed:
38+
- curl
39+
- wget
2840

2941
examples:
3042
- cli download example.com
@@ -37,20 +49,36 @@ commands:
3749
- name: upload
3850
alias: u
3951
help: Upload a file
52+
53+
# Add directories and users to the suggested completions.
4054
completions:
4155
- <directory>
4256
- <user>
57+
4358
args:
4459
- name: source
4560
required: true
4661
help: File to upload
4762

63+
# The allowed argument whitelist will be added automatically. In this case
64+
# typing `cli upload <TAB>` will suggest these files.
65+
allowed:
66+
- README.md
67+
- CHANGELOG.md
68+
4869
flags:
4970
- long: --user
5071
short: -u
5172
arg: user
5273
help: Username to use for logging in
5374
required: true
75+
76+
# Adding completions to a flag with an argument will add it to the suggested
77+
# words list. In this case typing `cli upload --user <TAB>` will suggest
78+
# users.
79+
completions:
80+
- <user>
81+
5482
- long: --password
5583
short: -p
5684
arg: password

examples/completions/src/lib/send_completions.sh

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,17 @@ send_completions() {
1313
echo $' compline="${COMP_WORDS[@]:1:$COMP_CWORD-1}"'
1414
echo $''
1515
echo $' case "$compline" in'
16+
echo $' \'download\'*\'--handler\') COMPREPLY=($(compgen -W "curl wget" -- "$cur")) ;;'
17+
echo $' \'upload\'*\'--user\') COMPREPLY=($(compgen -A user -- "$cur")) ;;'
1618
echo $' \'completions\'*) COMPREPLY=($(compgen -W "--help -h" -- "$cur")) ;;'
17-
echo $' \'download\'*) COMPREPLY=($(compgen -A file -W "--force --help -f -h" -- "$cur")) ;;'
18-
echo $' \'upload\'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u" -- "$cur")) ;;'
19-
echo $' \'d\'*) COMPREPLY=($(compgen -A file -W "--force --help -f -h" -- "$cur")) ;;'
20-
echo $' \'u\'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u" -- "$cur")) ;;'
19+
echo $' \'d\'*\'--handler\') COMPREPLY=($(compgen -W "curl wget" -- "$cur")) ;;'
20+
echo $' \'upload\'*\'-u\') COMPREPLY=($(compgen -A user -- "$cur")) ;;'
21+
echo $' \'download\'*) COMPREPLY=($(compgen -A file -W "--force --handler --help -f -h" -- "$cur")) ;;'
22+
echo $' \'u\'*\'--user\') COMPREPLY=($(compgen -A user -- "$cur")) ;;'
23+
echo $' \'upload\'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u CHANGELOG.md README.md" -- "$cur")) ;;'
24+
echo $' \'u\'*\'-u\') COMPREPLY=($(compgen -A user -- "$cur")) ;;'
25+
echo $' \'d\'*) COMPREPLY=($(compgen -A file -W "--force --handler --help -f -h" -- "$cur")) ;;'
26+
echo $' \'u\'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u CHANGELOG.md README.md" -- "$cur")) ;;'
2127
echo $' *) COMPREPLY=($(compgen -W "--help --version -h -v completions d download u upload" -- "$cur")) ;;'
2228
echo $' esac'
2329
echo $'} &&'

spec/approvals/examples/completions

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,17 @@ _cli_completions() {
7676
compline="${COMP_WORDS[@]:1:$COMP_CWORD-1}"
7777

7878
case "$compline" in
79+
'download'*'--handler') COMPREPLY=($(compgen -W "curl wget" -- "$cur")) ;;
80+
'upload'*'--user') COMPREPLY=($(compgen -A user -- "$cur")) ;;
7981
'completions'*) COMPREPLY=($(compgen -W "--help -h" -- "$cur")) ;;
80-
'download'*) COMPREPLY=($(compgen -A file -W "--force --help -f -h" -- "$cur")) ;;
81-
'upload'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u" -- "$cur")) ;;
82-
'd'*) COMPREPLY=($(compgen -A file -W "--force --help -f -h" -- "$cur")) ;;
83-
'u'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u" -- "$cur")) ;;
82+
'd'*'--handler') COMPREPLY=($(compgen -W "curl wget" -- "$cur")) ;;
83+
'upload'*'-u') COMPREPLY=($(compgen -A user -- "$cur")) ;;
84+
'download'*) COMPREPLY=($(compgen -A file -W "--force --handler --help -f -h" -- "$cur")) ;;
85+
'u'*'--user') COMPREPLY=($(compgen -A user -- "$cur")) ;;
86+
'upload'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u CHANGELOG.md README.md" -- "$cur")) ;;
87+
'u'*'-u') COMPREPLY=($(compgen -A user -- "$cur")) ;;
88+
'd'*) COMPREPLY=($(compgen -A file -W "--force --handler --help -f -h" -- "$cur")) ;;
89+
'u'*) COMPREPLY=($(compgen -A directory -A user -W "--help --password --user -h -p -u CHANGELOG.md README.md" -- "$cur")) ;;
8490
*) COMPREPLY=($(compgen -W "--help --version -h -v completions d download u upload" -- "$cur")) ;;
8591
esac
8692
} &&

0 commit comments

Comments
 (0)