Skip to content

Commit 3ad43e8

Browse files
committed
[#2501][#2502] bugfix and fix broken tests
1 parent 84354a9 commit 3ad43e8

5 files changed

Lines changed: 44 additions & 43 deletions

File tree

src/main/java/picocli/AutoComplete.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -777,15 +777,16 @@ private static void generatePositionParamCompletionCandidates(StringBuilder buff
777777
}
778778

779779
private static void generateCompletionCandidates(StringBuilder buff, OptionSpec f) {
780-
buff.append(generateCompletionCandidates(f));
780+
buff.append(format(" local %s_option_args=(\"%s\") # %s values\n",
781+
bashify(optionNameAndParamLabel(f)),
782+
concat("\" \"", extract(f.completionCandidates())).trim(),
783+
f.longestName()));
781784
}
782785

783-
private static String generateCompletionCandidates(OptionSpec f) {
784-
return format(" local %s_%s_option_args=(\"%s\") # %s values\n",
786+
private static String optionNameAndParamLabel(OptionSpec f) {
787+
return format("%s_%s",
785788
bashify(f.longestName()).replaceFirst("^_+", ""),
786-
bashify(f.paramLabel()),
787-
concat("\" \"", extract(f.completionCandidates())).trim(),
788-
f.longestName());
789+
bashify(f.paramLabel()));
789790
}
790791

791792
private static List<String> extract(Iterable<String> generator) {
@@ -854,7 +855,7 @@ private static String generateOptionsCases(List<OptionSpec> argOptionFields, Str
854855
if (option.completionCandidates() != null) {
855856
buff.append(format("%s %s)\n", indent, concat("|", option.names(), null, new SingleQuoteFunction()))); // " -u|--timeUnit)\n"
856857
buff.append(format("%s local IFS=$'\\n'\n", indent));
857-
buff.append(format("%s COMPREPLY=( $( compReplyArray \"${%s_option_args[@]}\" ) )\n", indent, generateCompletionCandidates(option)));
858+
buff.append(format("%s COMPREPLY=( $( compReplyArray \"${%s_option_args[@]}\" ) )\n", indent, optionNameAndParamLabel(option)));
858859
buff.append(format("%s return $?\n", indent));
859860
buff.append(format("%s ;;\n", indent));
860861
} else if (type.equals(File.class) || "java.nio.file.Path".equals(type.getName())) {

src/test/resources/bashify_completion.bash

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,14 @@ function _picocli_bashify() {
171171
local commands=""
172172
local flag_opts=""
173173
local arg_opts="'-x'"
174-
local _AB_C_option_args=("1") # -x values
174+
local x__AB_C_option_args=("1") # -x values
175175

176176
type compopt &>/dev/null && compopt +o default
177177

178178
case ${prev_word} in
179179
'-x')
180180
local IFS=$'\n'
181-
COMPREPLY=( $( compReplyArray "${_AB_C_option_args[@]}" ) )
181+
COMPREPLY=( $( compReplyArray "${x__AB_C_option_args[@]}" ) )
182182
return $?
183183
;;
184184
esac

src/test/resources/basic.bash

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,14 @@ function _picocli_basicExample() {
171171
local commands=""
172172
local flag_opts=""
173173
local arg_opts="'-u' '--timeUnit' '-t' '--timeout'"
174-
local timeUnit_option_args=("%2$s") # --timeUnit values
174+
local timeUnit_timeUnit_option_args=("%2$s") # --timeUnit values
175175

176176
type compopt &>/dev/null && compopt +o default
177177

178178
case ${prev_word} in
179179
'-u'|'--timeUnit')
180180
local IFS=$'\n'
181-
COMPREPLY=( $( compReplyArray "${timeUnit_option_args[@]}" ) )
181+
COMPREPLY=( $( compReplyArray "${timeUnit_timeUnit_option_args[@]}" ) )
182182
return $?
183183
;;
184184
'-t'|'--timeout')

src/test/resources/picocompletion-demo-help_completion.bash

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ function _picocli_picocompletion-demo-help_sub1() {
240240
local commands=""
241241
local flag_opts=""
242242
local arg_opts="'--num' '--str' '--candidates'"
243-
local str2_option_args=("aaa" "bbb" "ccc") # --candidates values
243+
local candidates_str2_option_args=("aaa" "bbb" "ccc") # --candidates values
244244

245245
type compopt &>/dev/null && compopt +o default
246246

@@ -253,7 +253,7 @@ function _picocli_picocompletion-demo-help_sub1() {
253253
;;
254254
'--candidates')
255255
local IFS=$'\n'
256-
COMPREPLY=( $( compReplyArray "${str2_option_args[@]}" ) )
256+
COMPREPLY=( $( compReplyArray "${candidates_str2_option_args[@]}" ) )
257257
return $?
258258
;;
259259
esac
@@ -276,7 +276,7 @@ function _picocli_picocompletion-demo-help_sub1_alias() {
276276
local commands=""
277277
local flag_opts=""
278278
local arg_opts="'--num' '--str' '--candidates'"
279-
local str2_option_args=("aaa" "bbb" "ccc") # --candidates values
279+
local candidates_str2_option_args=("aaa" "bbb" "ccc") # --candidates values
280280

281281
type compopt &>/dev/null && compopt +o default
282282

@@ -289,7 +289,7 @@ function _picocli_picocompletion-demo-help_sub1_alias() {
289289
;;
290290
'--candidates')
291291
local IFS=$'\n'
292-
COMPREPLY=( $( compReplyArray "${str2_option_args[@]}" ) )
292+
COMPREPLY=( $( compReplyArray "${candidates_str2_option_args[@]}" ) )
293293
return $?
294294
;;
295295
esac
@@ -312,7 +312,7 @@ function _picocli_picocompletion-demo-help_sub2() {
312312
local commands="subsub1 sub2child1-alias subsub2 sub2child2-alias subsub3 sub2child3-alias"
313313
local flag_opts=""
314314
local arg_opts="'--num2' '--directory' '-d' '--thread-state' '--<invalid-name>'"
315-
local _0123_option_args=("NEW" "RUNNABLE" "BLOCKED" "WAITING" "TIMED_WAITING" "TERMINATED") # --thread-state values
315+
local thread_state__0123_option_args=("NEW" "RUNNABLE" "BLOCKED" "WAITING" "TIMED_WAITING" "TERMINATED") # --thread-state values
316316

317317
type compopt &>/dev/null && compopt +o default
318318

@@ -328,7 +328,7 @@ function _picocli_picocompletion-demo-help_sub2() {
328328
;;
329329
'--thread-state')
330330
local IFS=$'\n'
331-
COMPREPLY=( $( compReplyArray "${_0123_option_args[@]}" ) )
331+
COMPREPLY=( $( compReplyArray "${thread_state__0123_option_args[@]}" ) )
332332
return $?
333333
;;
334334
'--<invalid-name>')
@@ -360,7 +360,7 @@ function _picocli_picocompletion-demo-help_sub2_alias() {
360360
local commands="subsub1 sub2child1-alias subsub2 sub2child2-alias subsub3 sub2child3-alias"
361361
local flag_opts=""
362362
local arg_opts="'--num2' '--directory' '-d' '--thread-state' '--<invalid-name>'"
363-
local _0123_option_args=("NEW" "RUNNABLE" "BLOCKED" "WAITING" "TIMED_WAITING" "TERMINATED") # --thread-state values
363+
local thread_state__0123_option_args=("NEW" "RUNNABLE" "BLOCKED" "WAITING" "TIMED_WAITING" "TERMINATED") # --thread-state values
364364

365365
type compopt &>/dev/null && compopt +o default
366366

@@ -376,7 +376,7 @@ function _picocli_picocompletion-demo-help_sub2_alias() {
376376
;;
377377
'--thread-state')
378378
local IFS=$'\n'
379-
COMPREPLY=( $( compReplyArray "${_0123_option_args[@]}" ) )
379+
COMPREPLY=( $( compReplyArray "${thread_state__0123_option_args[@]}" ) )
380380
return $?
381381
;;
382382
'--<invalid-name>')
@@ -484,14 +484,14 @@ function _picocli_picocompletion-demo-help_sub2_subsub2() {
484484
local commands=""
485485
local flag_opts=""
486486
local arg_opts="'-u' '--timeUnit' '-t' '--timeout'"
487-
local timeUnit_option_args=("%2$s") # --timeUnit values
487+
local timeUnit_timeUnit_option_args=("%2$s") # --timeUnit values
488488

489489
type compopt &>/dev/null && compopt +o default
490490

491491
case ${prev_word} in
492492
'-u'|'--timeUnit')
493493
local IFS=$'\n'
494-
COMPREPLY=( $( compReplyArray "${timeUnit_option_args[@]}" ) )
494+
COMPREPLY=( $( compReplyArray "${timeUnit_timeUnit_option_args[@]}" ) )
495495
return $?
496496
;;
497497
'-t'|'--timeout')
@@ -523,14 +523,14 @@ function _picocli_picocompletion-demo-help_sub2_sub2child2_alias() {
523523
local commands=""
524524
local flag_opts=""
525525
local arg_opts="'-u' '--timeUnit' '-t' '--timeout'"
526-
local timeUnit_option_args=("%2$s") # --timeUnit values
526+
local timeUnit_timeUnit_option_args=("%2$s") # --timeUnit values
527527

528528
type compopt &>/dev/null && compopt +o default
529529

530530
case ${prev_word} in
531531
'-u'|'--timeUnit')
532532
local IFS=$'\n'
533-
COMPREPLY=( $( compReplyArray "${timeUnit_option_args[@]}" ) )
533+
COMPREPLY=( $( compReplyArray "${timeUnit_timeUnit_option_args[@]}" ) )
534534
return $?
535535
;;
536536
'-t'|'--timeout')
@@ -682,14 +682,14 @@ function _picocli_picocompletion-demo-help_sub2_alias_subsub2() {
682682
local commands=""
683683
local flag_opts=""
684684
local arg_opts="'-u' '--timeUnit' '-t' '--timeout'"
685-
local timeUnit_option_args=("%2$s") # --timeUnit values
685+
local timeUnit_timeUnit_option_args=("%2$s") # --timeUnit values
686686

687687
type compopt &>/dev/null && compopt +o default
688688

689689
case ${prev_word} in
690690
'-u'|'--timeUnit')
691691
local IFS=$'\n'
692-
COMPREPLY=( $( compReplyArray "${timeUnit_option_args[@]}" ) )
692+
COMPREPLY=( $( compReplyArray "${timeUnit_timeUnit_option_args[@]}" ) )
693693
return $?
694694
;;
695695
'-t'|'--timeout')
@@ -721,14 +721,14 @@ function _picocli_picocompletion-demo-help_sub2_alias_sub2child2_alias() {
721721
local commands=""
722722
local flag_opts=""
723723
local arg_opts="'-u' '--timeUnit' '-t' '--timeout'"
724-
local timeUnit_option_args=("%2$s") # --timeUnit values
724+
local timeUnit_timeUnit_option_args=("%2$s") # --timeUnit values
725725

726726
type compopt &>/dev/null && compopt +o default
727727

728728
case ${prev_word} in
729729
'-u'|'--timeUnit')
730730
local IFS=$'\n'
731-
COMPREPLY=( $( compReplyArray "${timeUnit_option_args[@]}" ) )
731+
COMPREPLY=( $( compReplyArray "${timeUnit_timeUnit_option_args[@]}" ) )
732732
return $?
733733
;;
734734
'-t'|'--timeout')

src/test/resources/picocompletion-demo_completion.bash

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ function _picocli_picocompletion-demo_sub1() {
237237
local commands=""
238238
local flag_opts=""
239239
local arg_opts="'--num' '--str' '--candidates'"
240-
local str2_option_args=("aaa" "bbb" "ccc") # --candidates values
240+
local candidates_str2_option_args=("aaa" "bbb" "ccc") # --candidates values
241241

242242
type compopt &>/dev/null && compopt +o default
243243

@@ -250,7 +250,7 @@ function _picocli_picocompletion-demo_sub1() {
250250
;;
251251
'--candidates')
252252
local IFS=$'\n'
253-
COMPREPLY=( $( compReplyArray "${str2_option_args[@]}" ) )
253+
COMPREPLY=( $( compReplyArray "${candidates_str2_option_args[@]}" ) )
254254
return $?
255255
;;
256256
esac
@@ -273,7 +273,7 @@ function _picocli_picocompletion-demo_sub1_alias() {
273273
local commands=""
274274
local flag_opts=""
275275
local arg_opts="'--num' '--str' '--candidates'"
276-
local str2_option_args=("aaa" "bbb" "ccc") # --candidates values
276+
local candidates_str2_option_args=("aaa" "bbb" "ccc") # --candidates values
277277

278278
type compopt &>/dev/null && compopt +o default
279279

@@ -286,7 +286,7 @@ function _picocli_picocompletion-demo_sub1_alias() {
286286
;;
287287
'--candidates')
288288
local IFS=$'\n'
289-
COMPREPLY=( $( compReplyArray "${str2_option_args[@]}" ) )
289+
COMPREPLY=( $( compReplyArray "${candidates_str2_option_args[@]}" ) )
290290
return $?
291291
;;
292292
esac
@@ -309,7 +309,7 @@ function _picocli_picocompletion-demo_sub2() {
309309
local commands="subsub1 sub2child1-alias subsub2 sub2child2-alias subsub3 sub2child3-alias"
310310
local flag_opts=""
311311
local arg_opts="'--num2' '--directory' '-d' '--thread-state' '--<invalid-name>'"
312-
local _0123_option_args=("NEW" "RUNNABLE" "BLOCKED" "WAITING" "TIMED_WAITING" "TERMINATED") # --thread-state values
312+
local thread_state__0123_option_args=("NEW" "RUNNABLE" "BLOCKED" "WAITING" "TIMED_WAITING" "TERMINATED") # --thread-state values
313313

314314
type compopt &>/dev/null && compopt +o default
315315

@@ -325,7 +325,7 @@ function _picocli_picocompletion-demo_sub2() {
325325
;;
326326
'--thread-state')
327327
local IFS=$'\n'
328-
COMPREPLY=( $( compReplyArray "${_0123_option_args[@]}" ) )
328+
COMPREPLY=( $( compReplyArray "${thread_state__0123_option_args[@]}" ) )
329329
return $?
330330
;;
331331
'--<invalid-name>')
@@ -357,7 +357,7 @@ function _picocli_picocompletion-demo_sub2_alias() {
357357
local commands="subsub1 sub2child1-alias subsub2 sub2child2-alias subsub3 sub2child3-alias"
358358
local flag_opts=""
359359
local arg_opts="'--num2' '--directory' '-d' '--thread-state' '--<invalid-name>'"
360-
local _0123_option_args=("NEW" "RUNNABLE" "BLOCKED" "WAITING" "TIMED_WAITING" "TERMINATED") # --thread-state values
360+
local thread_state__0123_option_args=("NEW" "RUNNABLE" "BLOCKED" "WAITING" "TIMED_WAITING" "TERMINATED") # --thread-state values
361361

362362
type compopt &>/dev/null && compopt +o default
363363

@@ -373,7 +373,7 @@ function _picocli_picocompletion-demo_sub2_alias() {
373373
;;
374374
'--thread-state')
375375
local IFS=$'\n'
376-
COMPREPLY=( $( compReplyArray "${_0123_option_args[@]}" ) )
376+
COMPREPLY=( $( compReplyArray "${thread_state__0123_option_args[@]}" ) )
377377
return $?
378378
;;
379379
'--<invalid-name>')
@@ -463,14 +463,14 @@ function _picocli_picocompletion-demo_sub2_subsub2() {
463463
local commands=""
464464
local flag_opts=""
465465
local arg_opts="'-u' '--timeUnit' '-t' '--timeout'"
466-
local timeUnit_option_args=("%2$s") # --timeUnit values
466+
local timeUnit_timeUnit_option_args=("%2$s") # --timeUnit values
467467

468468
type compopt &>/dev/null && compopt +o default
469469

470470
case ${prev_word} in
471471
'-u'|'--timeUnit')
472472
local IFS=$'\n'
473-
COMPREPLY=( $( compReplyArray "${timeUnit_option_args[@]}" ) )
473+
COMPREPLY=( $( compReplyArray "${timeUnit_timeUnit_option_args[@]}" ) )
474474
return $?
475475
;;
476476
'-t'|'--timeout')
@@ -502,14 +502,14 @@ function _picocli_picocompletion-demo_sub2_sub2child2_alias() {
502502
local commands=""
503503
local flag_opts=""
504504
local arg_opts="'-u' '--timeUnit' '-t' '--timeout'"
505-
local timeUnit_option_args=("%2$s") # --timeUnit values
505+
local timeUnit_timeUnit_option_args=("%2$s") # --timeUnit values
506506

507507
type compopt &>/dev/null && compopt +o default
508508

509509
case ${prev_word} in
510510
'-u'|'--timeUnit')
511511
local IFS=$'\n'
512-
COMPREPLY=( $( compReplyArray "${timeUnit_option_args[@]}" ) )
512+
COMPREPLY=( $( compReplyArray "${timeUnit_timeUnit_option_args[@]}" ) )
513513
return $?
514514
;;
515515
'-t'|'--timeout')
@@ -661,14 +661,14 @@ function _picocli_picocompletion-demo_sub2_alias_subsub2() {
661661
local commands=""
662662
local flag_opts=""
663663
local arg_opts="'-u' '--timeUnit' '-t' '--timeout'"
664-
local timeUnit_option_args=("%2$s") # --timeUnit values
664+
local timeUnit_timeUnit_option_args=("%2$s") # --timeUnit values
665665

666666
type compopt &>/dev/null && compopt +o default
667667

668668
case ${prev_word} in
669669
'-u'|'--timeUnit')
670670
local IFS=$'\n'
671-
COMPREPLY=( $( compReplyArray "${timeUnit_option_args[@]}" ) )
671+
COMPREPLY=( $( compReplyArray "${timeUnit_timeUnit_option_args[@]}" ) )
672672
return $?
673673
;;
674674
'-t'|'--timeout')
@@ -700,14 +700,14 @@ function _picocli_picocompletion-demo_sub2_alias_sub2child2_alias() {
700700
local commands=""
701701
local flag_opts=""
702702
local arg_opts="'-u' '--timeUnit' '-t' '--timeout'"
703-
local timeUnit_option_args=("%2$s") # --timeUnit values
703+
local timeUnit_timeUnit_option_args=("%2$s") # --timeUnit values
704704

705705
type compopt &>/dev/null && compopt +o default
706706

707707
case ${prev_word} in
708708
'-u'|'--timeUnit')
709709
local IFS=$'\n'
710-
COMPREPLY=( $( compReplyArray "${timeUnit_option_args[@]}" ) )
710+
COMPREPLY=( $( compReplyArray "${timeUnit_timeUnit_option_args[@]}" ) )
711711
return $?
712712
;;
713713
'-t'|'--timeout')

0 commit comments

Comments
 (0)