From 221a5f70498268c864205ed6d82aa3b6875da053 Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Mon, 24 Nov 2025 17:33:16 -0800 Subject: [PATCH] client: docker: add `exec` wrapper, update completion --- client/src/docker/completion.bash | 4 ++-- client/src/docker/docker.bash | 4 ++++ client/src/docker/lib/internal/lib_docker.bash | 5 +++++ client/src/docker/lib/lib_docker.bash | 10 ++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/client/src/docker/completion.bash b/client/src/docker/completion.bash index 6cad098..e054c45 100644 --- a/client/src/docker/completion.bash +++ b/client/src/docker/completion.bash @@ -46,7 +46,7 @@ function docker-finance::completion() mapfile -t _images < <(docker images --format "{{.Repository}}:{{.Tag}}" --filter=reference='docker-finance/*/*:*' | cut -d'/' -f2- | grep $USER) declare -r _images - local -r _commands=("gen" "edit" "build" "update" "backup" "rm" "up" "down" "start" "stop" "run" "shell" "version" "license" "linter" "doxygen" "plugins") + local -r _commands=("gen" "edit" "build" "update" "backup" "rm" "up" "down" "start" "stop" "run" "shell" "exec" "version" "license" "linter" "doxygen" "plugins") local _reply @@ -86,7 +86,7 @@ function docker-finance::completion() update) mapfile -t _reply < <(compgen -W "help type${global_arg_delim_2}" -- "$_cur") ;; - backup | rm | up | down | start | stop) + backup | rm | up | down | start | stop | exec) # TODO: _currently no-op ;; shell) diff --git a/client/src/docker/docker.bash b/client/src/docker/docker.bash index ec9926d..8f5833c 100755 --- a/client/src/docker/docker.bash +++ b/client/src/docker/docker.bash @@ -77,6 +77,7 @@ function main() run \e[34;3mSpawn docker-finance container with given command (container removed on exit)\e[0m shell \e[34;3mOpen shell into running docker-finance container\e[0m + exec \e[34;3mExecute command within running docker-finance container\e[0m plugins \e[34;3mExecute a client-side categorical docker-finance plugin ('repo' or 'custom')\e[0m version \e[34;3mPrint current version of docker-finance and its dependencies\e[0m @@ -203,6 +204,9 @@ function main() shell) lib_docker::shell "${@:3}" ;; + exec) + lib_docker::exec "${@:3}" + ;; backup) lib_docker::backup "${@:3}" ;; diff --git a/client/src/docker/lib/internal/lib_docker.bash b/client/src/docker/lib/internal/lib_docker.bash index 02daaf7..d72f82e 100644 --- a/client/src/docker/lib/internal/lib_docker.bash +++ b/client/src/docker/lib/internal/lib_docker.bash @@ -505,6 +505,11 @@ function lib_docker::__shell() docker exec -it --user "$global_arg_user" --workdir / "$global_container" /bin/bash } +function lib_docker::__exec() +{ + docker exec -it "$global_container" /bin/bash -i -c "$@" +} + function lib_docker::__parse_args_edit() { [ -z "$global_usage" ] && lib_utils::die_fatal diff --git a/client/src/docker/lib/lib_docker.bash b/client/src/docker/lib/lib_docker.bash index f0d4edb..6af88bb 100644 --- a/client/src/docker/lib/lib_docker.bash +++ b/client/src/docker/lib/lib_docker.bash @@ -218,6 +218,16 @@ function lib_docker::shell() lib_utils::catch $? } +# +# Execute command within a running docker-finance container +# + +function lib_docker::exec() +{ + lib_docker::__exec "$@" + lib_utils::catch $? +} + # # Edit client configuration of given docker-finance instance #