client: completion: add plugins support
This commit is contained in:
@@ -22,6 +22,9 @@ if ! hash docker &>/dev/null; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# TODO: HACK: needed for `plugins` completion
|
||||||
|
declare -gx instance
|
||||||
|
|
||||||
function docker-finance::completion()
|
function docker-finance::completion()
|
||||||
{
|
{
|
||||||
local _cur="${COMP_WORDS[COMP_CWORD]}"
|
local _cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
@@ -31,7 +34,7 @@ function docker-finance::completion()
|
|||||||
mapfile -t _images < <(docker image ls | grep ^docker-finance | cut -d'/' -f2- | cut -d' ' -f1-4 | sed -e 's/ /:/')
|
mapfile -t _images < <(docker image ls | grep ^docker-finance | cut -d'/' -f2- | cut -d' ' -f1-4 | sed -e 's/ /:/')
|
||||||
declare -r _images
|
declare -r _images
|
||||||
|
|
||||||
local -r _commands=("gen" "edit" "build" "backup" "rm" "up" "down" "start" "stop" "run" "shell" "version" "license" "linter" "doxygen")
|
local -r _commands=("gen" "edit" "build" "backup" "rm" "up" "down" "start" "stop" "run" "shell" "version" "license" "linter" "doxygen" "plugins")
|
||||||
|
|
||||||
local _reply
|
local _reply
|
||||||
|
|
||||||
@@ -43,6 +46,7 @@ function docker-finance::completion()
|
|||||||
for _r in "${_reply[@]}"; do
|
for _r in "${_reply[@]}"; do
|
||||||
COMPREPLY+=("'${_r}'")
|
COMPREPLY+=("'${_r}'")
|
||||||
done
|
done
|
||||||
|
instance="${COMPREPLY[*]}"
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
mapfile -t _reply < <(compgen -W "${_commands[*]}" -- "$_cur")
|
mapfile -t _reply < <(compgen -W "${_commands[*]}" -- "$_cur")
|
||||||
@@ -85,6 +89,31 @@ function docker-finance::completion()
|
|||||||
doxygen)
|
doxygen)
|
||||||
mapfile -t _reply < <(compgen -W "help gen${global_arg_delim_2} rm${global_arg_delim_2}" -- "$_cur")
|
mapfile -t _reply < <(compgen -W "help gen${global_arg_delim_2} rm${global_arg_delim_2}" -- "$_cur")
|
||||||
;;
|
;;
|
||||||
|
plugins)
|
||||||
|
# TODO: HACK: since this is completion, lib_docker is never initialized, prior to completing
|
||||||
|
# (environment variables are needed).
|
||||||
|
if [ -z "$DOCKER_FINANCE_CLIENT_REPO" ]; then
|
||||||
|
_aliases=~/.bash_aliases
|
||||||
|
! test -f "$_aliases" && _aliases=~/.bashrc
|
||||||
|
|
||||||
|
declare -g DOCKER_FINANCE_CLIENT_REPO
|
||||||
|
DOCKER_FINANCE_CLIENT_REPO="$(dirname "$(grep '^alias docker-finance=' $_aliases | cut -d'=' -f2 | sed -e "s:'::g" -e 's:"::g')")/../"
|
||||||
|
source "${DOCKER_FINANCE_CLIENT_REPO}/client/src/docker/lib/lib_docker.bash" || echo $?
|
||||||
|
|
||||||
|
local _instance
|
||||||
|
declare -r _instance="$(echo $instance | sed "s:'::g")" # TODO: remove after hack for colon tag is resolved
|
||||||
|
lib_docker::docker "$_instance" || lib_utils::print_fatal "$_instance not initialized"
|
||||||
|
fi
|
||||||
|
[ -z "$DOCKER_FINANCE_CLIENT_PLUGINS" ] && lib_utils::print_fatal "DOCKER_FINANCE_CLIENT_PLUGINS not set"
|
||||||
|
|
||||||
|
local _plugins
|
||||||
|
mapfile -t _plugins < <({
|
||||||
|
find "${DOCKER_FINANCE_CLIENT_PLUGINS}"/client/docker -type f -executable -printf 'custom/%P\n' 2>/dev/null
|
||||||
|
find "${DOCKER_FINANCE_CLIENT_REPO}"/client/plugins/docker -type f -executable -printf 'repo/%P\n' 2>/dev/null
|
||||||
|
})
|
||||||
|
declare -r _plugins
|
||||||
|
mapfile -t _reply < <(compgen -W "${_plugins[*]}" -- "$_cur")
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
declare -r _reply
|
declare -r _reply
|
||||||
COMPREPLY=("${_reply[@]}")
|
COMPREPLY=("${_reply[@]}")
|
||||||
|
|||||||
Reference in New Issue
Block a user