From 52c958b927dd7031c3800f4143118e700837fec0 Mon Sep 17 00:00:00 2001 From: Aaron Fiore Date: Sat, 10 Aug 2024 02:10:05 -0700 Subject: [PATCH] client: lib_docker: refactor for library support (`plugins`) - Exports globals to caller for "library" support (export to `plugins`, etc.) - Removes enforcement of initializing "constructor" with 2nd arg (`command`) * Arg not needed since external/internal checks already in place * Context specific: if needed, caller should always check if set * Removal needed so library can be used within a library context - `basename` fix to allow for bash completion --- client/src/docker/lib/lib_docker.bash | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/client/src/docker/lib/lib_docker.bash b/client/src/docker/lib/lib_docker.bash index 92e24ea..27d91c9 100644 --- a/client/src/docker/lib/lib_docker.bash +++ b/client/src/docker/lib/lib_docker.bash @@ -53,7 +53,7 @@ deps=("sed") lib_utils::deps_check "${deps[@]}" # Top-level caller -global_basename="$(basename $0)" +global_basename="$(basename -- $0)" declare -rx global_basename # Globals argument delimiters @@ -67,18 +67,21 @@ function lib_docker::docker() { # Instance format: # - # docker-finance/platform/user:tag + # docker-finance/platform/user:tag [command] # # Where user supplies: # - # platform/user:tag + # platform/user:tag [command] + # + # Where [command] is optional if only instantiating library - [[ -z "$1" || -z "$2" ]] && return 2 + [ -z "$1" ] && return 2 [[ ! "$1" =~ $global_arg_delim_1 ]] && return 2 + [ -z "$2" ] && lib_utils::print_debug "command not given, assuming unused" # Parse image IFS="/" read -ra _image <<<"$1" - declare -g global_platform="${_image[0]}" + declare -gx global_platform="${_image[0]}" local -r _user="${_image[1]}" lib_utils::print_debug "global_platform=${global_platform}" @@ -89,26 +92,26 @@ function lib_docker::docker() # Parse tag IFS=":" read -ra _tag <<<"$_user" - declare -g global_user="${_tag[0]}" - declare -g global_tag="${_tag[1]}" + declare -gx global_user="${_tag[0]}" + declare -gx global_tag="${_tag[1]}" [ -z "$global_tag" ] && global_tag="latest" # TODO: needs to make sense, actually have version-related functionality with client conf lib_utils::print_debug "global_user=${global_user}" lib_utils::print_debug "global_tag=${global_tag}" # Set instance name - declare -gr global_image="docker-finance/${global_platform}/${global_user}" - declare -gr global_container="docker-finance_${global_platform}_${global_user}" - declare -gr global_network="docker-finance_${global_platform}" + declare -gxr global_image="docker-finance/${global_platform}/${global_user}" + declare -gxr global_container="docker-finance_${global_platform}_${global_user}" + declare -gxr global_network="docker-finance_${global_platform}" lib_utils::print_debug "global_image=${global_image}" lib_utils::print_debug "global_container=${global_container}" lib_utils::print_debug "global_network=${global_network}" # Instance command - declare -gr global_command="$2" + declare -gxr global_command="$2" lib_utils::print_debug "global_command=${global_command}" # Convenience usage - declare -gr global_usage="$global_basename ${global_platform}${global_arg_delim_1}${global_user}:${global_tag} $global_command" + declare -gxr global_usage="$global_basename ${global_platform}${global_arg_delim_1}${global_user}:${global_tag} $global_command" lib_utils::print_debug "global_usage=${global_usage}" # Setup remaining client/container globals