diff --git a/client/src/docker/docker.bash b/client/src/docker/docker.bash
index 9d6d86c..5f66882 100755
--- a/client/src/docker/docker.bash
+++ b/client/src/docker/docker.bash
@@ -21,7 +21,12 @@
# Implementation
#
-source "$(dirname "$(realpath -s $0)")/src/docker/lib/lib_docker.bash" || exit 1
+if [ -z "$DOCKER_FINANCE_CLIENT_REPO" ]; then
+ declare -gx DOCKER_FINANCE_CLIENT_REPO
+ DOCKER_FINANCE_CLIENT_REPO="$(dirname "$(realpath -s $0)" | rev | cut -d'/' -f2- | rev)"
+fi
+
+source "${DOCKER_FINANCE_CLIENT_REPO}/client/src/docker/lib/lib_docker.bash" || exit 1
#
# Execute
diff --git a/client/src/docker/lib/internal/dev-tools/lib_doxygen.bash b/client/src/docker/lib/internal/dev-tools/lib_doxygen.bash
index 73d0f7b..7482a69 100644
--- a/client/src/docker/lib/internal/dev-tools/lib_doxygen.bash
+++ b/client/src/docker/lib/internal/dev-tools/lib_doxygen.bash
@@ -17,12 +17,14 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
+[ -z "$DOCKER_FINANCE_CLIENT_REPO" ] && exit 1
+
#
# "Libraries"
#
-source "$(dirname "$(realpath -s $0)")/src/docker/lib/internal/lib_docker.bash" || exit 1
-source "$(dirname "$(realpath -s $0)")/../container/src/finance/lib/internal/lib_utils.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/client/src/docker/lib/internal/lib_docker.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/container/src/finance/lib/internal/lib_utils.bash" || exit 1
#
# Implementation
diff --git a/client/src/docker/lib/internal/dev-tools/lib_license.bash b/client/src/docker/lib/internal/dev-tools/lib_license.bash
index da48f51..01dd527 100644
--- a/client/src/docker/lib/internal/dev-tools/lib_license.bash
+++ b/client/src/docker/lib/internal/dev-tools/lib_license.bash
@@ -17,11 +17,13 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
+[ -z "$DOCKER_FINANCE_CLIENT_REPO" ] && exit 1
+
#
# "Libraries"
#
-source "$(dirname "$(realpath -s $0)")/../container/src/finance/lib/internal/lib_utils.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/container/src/finance/lib/internal/lib_utils.bash" || exit 1
#
# Implementation
diff --git a/client/src/docker/lib/internal/dev-tools/lib_linter.bash b/client/src/docker/lib/internal/dev-tools/lib_linter.bash
index 87bed26..f704010 100644
--- a/client/src/docker/lib/internal/dev-tools/lib_linter.bash
+++ b/client/src/docker/lib/internal/dev-tools/lib_linter.bash
@@ -17,12 +17,14 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
+[ -z "$DOCKER_FINANCE_CLIENT_REPO" ] && exit 1
+
#
# "Libraries"
#
-source "$(dirname "$(realpath -s $0)")/src/docker/lib/internal/lib_docker.bash" || exit 1
-source "$(dirname "$(realpath -s $0)")/../container/src/finance/lib/internal/lib_utils.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/client/src/docker/lib/internal/lib_docker.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/container/src/finance/lib/internal/lib_utils.bash" || exit 1
#
# Implementation
diff --git a/client/src/docker/lib/internal/lib_docker.bash b/client/src/docker/lib/internal/lib_docker.bash
index b6bb5b8..1214ecd 100644
--- a/client/src/docker/lib/internal/lib_docker.bash
+++ b/client/src/docker/lib/internal/lib_docker.bash
@@ -17,12 +17,14 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
+[ -z "$DOCKER_FINANCE_CLIENT_REPO" ] && exit 1
+
#
# "Libraries"
#
# Utilities (a container library (but container is never exposed to client code))
-source "$(dirname "$(realpath -s $0)")/../container/src/finance/lib/internal/lib_utils.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/container/src/finance/lib/internal/lib_utils.bash" || exit 1
#
# Implementation
diff --git a/client/src/docker/lib/internal/lib_gen.bash b/client/src/docker/lib/internal/lib_gen.bash
index 8f331b0..e149ffc 100644
--- a/client/src/docker/lib/internal/lib_gen.bash
+++ b/client/src/docker/lib/internal/lib_gen.bash
@@ -17,11 +17,13 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
+[ -z "$DOCKER_FINANCE_CLIENT_REPO" ] && exit 1
+
#
# "Libraries"
#
-source "$(dirname "$(realpath -s $0)")/../container/src/finance/lib/internal/lib_utils.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/container/src/finance/lib/internal/lib_utils.bash" || exit 1
#
# Implementation
@@ -62,7 +64,7 @@ function lib_gen::gen()
lib_utils::print_debug "Constructing environment"
# Generate `docker-finance` version
- global_repo_manifest="$(dirname "$(realpath -s $0)")/docker-finance.yaml"
+ global_repo_manifest="${DOCKER_FINANCE_CLIENT_REPO}/client/docker-finance.yaml"
declare -gr global_repo_manifest
global_client_version="$(grep '^version: ' $global_repo_manifest | sed -e 's/version: "//' -e 's/"//g')"
@@ -70,7 +72,7 @@ function lib_gen::gen()
declare -gr global_client_version
# Repository-provided (not user-defined) default environment
- global_repo_conf_dir="$(dirname "$(realpath -s $0)")/docker-finance.d"
+ global_repo_conf_dir="${DOCKER_FINANCE_CLIENT_REPO}/client/docker-finance.d"
declare -gr global_repo_conf_dir
# Environment
@@ -98,7 +100,7 @@ function lib_gen::gen()
declare -gr global_platform_image
# Base location of Docker-related files (.in and final out files)
- global_repo_dockerfiles="$(dirname "$(realpath -s $0)")/Dockerfiles/${global_platform_image}"
+ global_repo_dockerfiles="${DOCKER_FINANCE_CLIENT_REPO}/client/Dockerfiles/${global_platform_image}"
# shellcheck disable=SC2034 # used in lib_docker
declare -gr global_repo_dockerfiles
diff --git a/client/src/docker/lib/lib_docker.bash b/client/src/docker/lib/lib_docker.bash
index ad91bd7..2a5dce3 100644
--- a/client/src/docker/lib/lib_docker.bash
+++ b/client/src/docker/lib/lib_docker.bash
@@ -17,23 +17,25 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
+[ -z "$DOCKER_FINANCE_CLIENT_REPO" ] && exit 1
+
#
# "Libraries"
#
# Docker impl
-source "$(dirname "$(realpath -s $0)")/src/docker/lib/internal/lib_docker.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/client/src/docker/lib/internal/lib_docker.bash" || exit 1
# Environment generation
-source "$(dirname "$(realpath -s $0)")/src/docker/lib/internal/lib_gen.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/client/src/docker/lib/internal/lib_gen.bash" || exit 1
# Development tools
-source "$(dirname "$(realpath -s $0)")/src/docker/lib/internal/dev-tools/lib_doxygen.bash" || exit 1
-source "$(dirname "$(realpath -s $0)")/src/docker/lib/internal/dev-tools/lib_license.bash" || exit 1
-source "$(dirname "$(realpath -s $0)")/src/docker/lib/internal/dev-tools/lib_linter.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/client/src/docker/lib/internal/dev-tools/lib_doxygen.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/client/src/docker/lib/internal/dev-tools/lib_license.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/client/src/docker/lib/internal/dev-tools/lib_linter.bash" || exit 1
# Utilities (a container library (but container is never exposed to client code))
-source "$(dirname "$(realpath -s $0)")/../container/src/finance/lib/internal/lib_utils.bash" || exit 1
+source "${DOCKER_FINANCE_CLIENT_REPO}/container/src/finance/lib/internal/lib_utils.bash" || exit 1
#
# Implementation