shell-completion: fix portablectl path completion with preceding params

The completion fails to complete to paths for verbs that need them when
a --param is the previous word, e.g.:

portablectl attach --runtime <tab>

fails to complete to paths

(cherry picked from commit 2abb433ca1)
This commit is contained in:
Luca Boccassi
2025-12-03 22:23:23 +00:00
parent a3e959e137
commit 0359c8f456

View File

@@ -91,7 +91,7 @@ _portablectl() {
elif __contains_word "$verb" ${VERBS[STANDALONE]}; then
comps=''
elif __contains_word "$verb" ${VERBS[IMAGE]}; then
if [[ $n == 1 ]]; then
if [[ $n == 1 ]] || [[ "$prev" = -* ]] || __contains_word "${COMP_WORDS[COMP_CWORD-2]}" ${OPTS[ARG]}; then
comps=$( compgen -A file -- "$cur" )
compopt -o filenames
else
@@ -101,10 +101,10 @@ _portablectl() {
comps=$( compgen -A file -- "$cur" )
compopt -o filenames
elif __contains_word "$verb" ${VERBS[IMAGE_WITH_BOOL]}; then
if [[ $n == 1 ]]; then
if [[ $n == 1 ]] || [[ "$prev" = -* ]] || __contains_word "${COMP_WORDS[COMP_CWORD-2]}" ${OPTS[ARG]}; then
comps=$( compgen -A file -- "$cur" )
compopt -o filenames
elif [[ $n == 2 ]]; then
elif ! __contains_word "$prev" "yes" "no" && { [[ $n == 2 ]] || [[ "$prev" != -* ]]; }; then
comps='yes no'
else
comps=''