Stop slowing bash init by caching plugins path slowly

Fixes issue #3889 by only loading docker plugins path when needed: if it is fast enough than it shouldn't be a problem to do this on demand; OTOH if it is slow then we shouldn't do this during *every* bash session initialization, regardless if docker completion will be needed or not.

Signed-off-by: Oded Arbel <oded@geek.co.il>
This commit is contained in:
Oded Arbel 2023-08-21 19:42:32 +03:00
Родитель cdabfa2aa5
Коммит 1da67be9ca
1 изменённых файлов: 5 добавлений и 2 удалений

Просмотреть файл

@ -1142,7 +1142,10 @@ __docker_complete_user_group() {
fi
}
DOCKER_PLUGINS_PATH=$(docker info --format '{{range .ClientInfo.Plugins}}{{.Path}}:{{end}}')
__docker_plugins_path() {
local docker_plugins_path=$(docker info --format '{{range .ClientInfo.Plugins}}{{.Path}}:{{end}}')
echo "${docker_plugins_path//:/ }"
}
__docker_complete_plugin() {
local path=$1
@ -5504,7 +5507,7 @@ _docker() {
# Create completion functions for all registered plugins
local known_plugin_commands=()
local plugin_name=""
for plugin_path in ${DOCKER_PLUGINS_PATH//:/ }; do
for plugin_path in $(__docker_plugins_path); do
plugin_name=$(basename "$plugin_path" | sed 's/ *$//')
plugin_name=${plugin_name#docker-}
plugin_name=${plugin_name%%.*}