Skip to content

Commit 01264ba

Browse files
committed
refactor(cvs): refactor _comp_cmd_cvs__{ => compgen_}entries
1 parent fcb537f commit 01264ba

File tree

1 file changed

+16
-27
lines changed

1 file changed

+16
-27
lines changed

completions/cvs

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
# cvs(1) completion -*- shell-script -*-
22

3-
_comp_cmd_cvs__entries()
3+
# Usage: _comp_cmd_cvs__compgen_entries [base_path]
4+
# @param[opt] $1
5+
# shellcheck disable=SC2120
6+
_comp_cmd_cvs__compgen_entries()
47
{
5-
local prefix=${cur%/*}/ IFS=$'\n'
6-
[[ -e ${prefix-}CVS/Entries ]] || prefix=""
7-
entries=($(cut -d/ -f2 -s "${prefix-}CVS/Entries" 2>/dev/null))
8-
if ((${#entries[@]})); then
9-
_comp_compgen -Rv entries -- -P "${prefix-}" -W '"${entries[@]}"'
8+
local base_path=${1-$cur}
9+
local _prefix=${base_path%/*}/
10+
[[ -e ${_prefix-}CVS/Entries ]] || _prefix=""
11+
_comp_compgen -c "${cur#"$_prefix"}" split -lP "$_prefix" -- "$(cut -d/ -f2 -s "${_prefix-}CVS/Entries" 2>/dev/null)" &&
1012
compopt -o filenames
11-
fi
1213
}
1314

1415
_comp_cmd_cvs__modules()
@@ -156,7 +157,7 @@ _comp_cmd_cvs()
156157
esac
157158

158159
if [[ $cur != -* ]]; then
159-
_comp_cmd_cvs__entries
160+
_comp_compgen -Rv entries -i cvs entries "${cur-}"
160161
if [[ ! $cur ]]; then
161162
_comp_expand_glob files '!(CVS)'
162163
else
@@ -201,9 +202,7 @@ _comp_cmd_cvs()
201202
if [[ $cur == -* ]]; then
202203
_comp_cmd_cvs__compgen_command_options "$1" "$mode"
203204
else
204-
_comp_cmd_cvs__entries
205-
((${#entries[@]})) &&
206-
_comp_compgen -- -W '"${entries[@]}"'
205+
_comp_cmd_cvs__compgen_entries
207206
fi
208207
;;
209208
annotate)
@@ -212,9 +211,7 @@ _comp_cmd_cvs()
212211
if [[ $cur == -* ]]; then
213212
_comp_cmd_cvs__compgen_command_options "$1" "$mode"
214213
else
215-
_comp_cmd_cvs__entries
216-
((${#entries[@]})) &&
217-
_comp_compgen -- -W '"${entries[@]}"'
214+
_comp_cmd_cvs__compgen_entries
218215
fi
219216
;;
220217
checkout)
@@ -269,9 +266,7 @@ _comp_cmd_cvs()
269266
s/^cvs diff: \([^ ]*\) .*, no comparison available$/\1/p
270267
')"
271268
else
272-
_comp_cmd_cvs__entries
273-
((${#entries[@]})) &&
274-
_comp_compgen -- -W '"${entries[@]}"'
269+
_comp_cmd_cvs__compgen_entries
275270
fi
276271
else
277272
_comp_cmd_cvs__compgen_command_options "$1" "$mode"
@@ -285,18 +280,14 @@ _comp_cmd_cvs()
285280
_comp_cmd_cvs__compgen_command_options "$1" "$mode"
286281
[[ ${COMPREPLY-} == *= ]] && compopt -o nospace
287282
else
288-
_comp_cmd_cvs__entries
289-
((${#entries[@]})) &&
290-
_comp_compgen -- -W '"${entries[@]}"'
283+
_comp_cmd_cvs__compgen_entries
291284
fi
292285
;;
293286
editors | watchers)
294287
if [[ $cur == -* ]]; then
295288
_comp_cmd_cvs__compgen_command_options "$1" "$mode"
296289
else
297-
_comp_cmd_cvs__entries
298-
((${#entries[@]})) &&
299-
_comp_compgen -- -W '"${entries[@]}"'
290+
_comp_cmd_cvs__compgen_entries
300291
fi
301292
;;
302293
export)
@@ -355,7 +346,7 @@ _comp_cmd_cvs()
355346
;;
356347
remove)
357348
if [[ $cur != -* ]]; then
358-
_comp_cmd_cvs__entries
349+
_comp_compgen -Rv entries -i cvs entries "${cur-}"
359350
if [[ $prev != -f ]]; then
360351
# find out what files are missing
361352
for i in "${!entries[@]}"; do
@@ -383,9 +374,7 @@ _comp_cmd_cvs()
383374
if [[ $cur == -* ]]; then
384375
_comp_cmd_cvs__compgen_command_options "$1" "$mode"
385376
else
386-
_comp_cmd_cvs__entries
387-
((${#entries[@]})) &&
388-
_comp_compgen -- -W '"${entries[@]}"'
377+
_comp_cmd_cvs__compgen_entries
389378
fi
390379
;;
391380
"")

0 commit comments

Comments
 (0)