client: completion: add plugins support
This commit is contained in:
@@ -22,6 +22,9 @@ if ! hash docker &>/dev/null; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# TODO: HACK: needed for `plugins` completion
|
||||
declare -gx instance
|
||||
|
||||
function docker-finance::completion()
|
||||
{
|
||||
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/ /:/')
|
||||
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
|
||||
|
||||
@@ -43,6 +46,7 @@ function docker-finance::completion()
|
||||
for _r in "${_reply[@]}"; do
|
||||
COMPREPLY+=("'${_r}'")
|
||||
done
|
||||
instance="${COMPREPLY[*]}"
|
||||
;;
|
||||
2)
|
||||
mapfile -t _reply < <(compgen -W "${_commands[*]}" -- "$_cur")
|
||||
@@ -85,6 +89,31 @@ function docker-finance::completion()
|
||||
doxygen)
|
||||
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
|
||||
declare -r _reply
|
||||
COMPREPLY=("${_reply[@]}")
|
||||
|
||||
Reference in New Issue
Block a user