Fix plugin completion parsing for plugins using `ShellCompDirectiveFilterFileExt`

Signed-off-by: Laura Brehm <laurabrehm@hey.com>
This commit is contained in:
Laura Brehm 2023-03-29 18:06:08 +01:00
parent 88924b1802
commit 683e4bf0c4
No known key found for this signature in database
GPG Key ID: 526E3FC49260D47A
1 changed files with 14 additions and 1 deletions

View File

@ -1155,7 +1155,20 @@ __docker_complete_plugin() {
resultArray+=( "$value" ) resultArray+=( "$value" )
fi fi
done done
local result=$(eval "${resultArray[*]}" 2> /dev/null | grep -v '^:[0-9]*$') local rawResult=$(eval "${resultArray[*]}" 2> /dev/null)
local result=$(grep -v '^:[0-9]*$' <<< "$rawResult")
# Compose V2 completions sometimes returns returns `:8` (ShellCompDirectiveFilterFileExt)
# with the expected file extensions (such as `yml`, `yaml`) to indicate that the shell should
# provide autocompletions for files with matching extensions
local completionFlag=$(tail -1 <<< "$rawResult")
if [ "$completionFlag" == ":8" ]; then
# format a valid glob pattern for the provided file extensions
local filePattern=$(tr '\n' '|' <<< "$result")
_filedir "$filePattern"
return
fi
# if result empty, just use filename completion as fallback # if result empty, just use filename completion as fallback
if [ -z "$result" ]; then if [ -z "$result" ]; then