forked from EvergreenCrypto/docker-finance
client: new internal client versioning system
- Version is now determined on-the-fly from manifest file - Internal versioning no longer depends on environment file
This commit is contained in:
@@ -32,8 +32,8 @@ services:
|
||||
- ${DOCKER_FINANCE_CLIENT_REPO}/container:${DOCKER_FINANCE_CLIENT_REPO}/container
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
environment:
|
||||
- DOCKER_FINANCE_VERSION=@DOCKER_FINANCE_VERSION@
|
||||
- DOCKER_FINANCE_CLIENT_REPO=${DOCKER_FINANCE_CLIENT_REPO}
|
||||
- DOCKER_FINANCE_VERSION=${DOCKER_FINANCE_VERSION}
|
||||
- GID=${DOCKER_FINANCE_GID}
|
||||
- UID=${DOCKER_FINANCE_UID}
|
||||
deploy:
|
||||
|
||||
@@ -33,6 +33,7 @@ services:
|
||||
# NOTE: although TZ can be used within the container, this *should* be more dynamic
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
environment:
|
||||
- DOCKER_FINANCE_VERSION=@DOCKER_FINANCE_VERSION@
|
||||
- DOCKER_FINANCE_CONTAINER_CMD=${DOCKER_FINANCE_CONTAINER_CMD}
|
||||
- DOCKER_FINANCE_CONTAINER_CONF=${DOCKER_FINANCE_CONTAINER_CONF}
|
||||
- DOCKER_FINANCE_CONTAINER_EDITOR=${DOCKER_FINANCE_CONTAINER_EDITOR}
|
||||
|
||||
@@ -33,6 +33,7 @@ services:
|
||||
# NOTE: although TZ can be used within the container, this should be more dynamic
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
environment:
|
||||
- DOCKER_FINANCE_VERSION=@DOCKER_FINANCE_VERSION@
|
||||
- DOCKER_FINANCE_CONTAINER_CMD=${DOCKER_FINANCE_CONTAINER_CMD}
|
||||
- DOCKER_FINANCE_CONTAINER_CONF=${DOCKER_FINANCE_CONTAINER_CONF}
|
||||
- DOCKER_FINANCE_CONTAINER_EDITOR=${DOCKER_FINANCE_CONTAINER_EDITOR}
|
||||
|
||||
9
client/docker-finance.d/client/env/gen.bash
vendored
9
client/docker-finance.d/client/env/gen.bash
vendored
@@ -24,16 +24,17 @@
|
||||
# Different platforms require slightly different environment
|
||||
[ -z "$global_platform" ] && exit 1
|
||||
|
||||
# Version is internally set on-the-fly
|
||||
[ -z "$global_client_version" ] && exit 1
|
||||
|
||||
export DOCKER_FINANCE_VERSION="$global_client_version"
|
||||
|
||||
# Developer related
|
||||
|
||||
if [ -z "$DOCKER_FINANCE_DEBUG" ]; then
|
||||
export DOCKER_FINANCE_DEBUG=false
|
||||
fi
|
||||
|
||||
if [ -z "$DOCKER_FINANCE_VERSION" ]; then
|
||||
export DOCKER_FINANCE_VERSION="1.0.0"
|
||||
fi
|
||||
|
||||
# Allows transparent r/w of mounted volumes
|
||||
|
||||
if [ -z "$DOCKER_FINANCE_UID" ]; then
|
||||
|
||||
@@ -49,6 +49,7 @@ fi
|
||||
# Remaining "constructor" implementation
|
||||
function lib_docker::__docker()
|
||||
{
|
||||
# TODO: refactor into lib_gen
|
||||
# Docker-related files
|
||||
[ -z "$DOCKER_FINANCE_CLIENT_REPO" ] && lib_utils::die_fatal
|
||||
declare -g global_repo_dockerfiles="${DOCKER_FINANCE_CLIENT_REPO}/client/Dockerfiles/"
|
||||
@@ -77,6 +78,7 @@ function lib_docker::__docker()
|
||||
lib_utils::print_debug "Generating '${_path}'"
|
||||
|
||||
sed \
|
||||
-e "s|@DOCKER_FINANCE_VERSION@|${global_client_version}|g" \
|
||||
-e "s|@DOCKER_FINANCE_IMAGE@|${global_image}:${global_tag}|g" \
|
||||
-e "s|@DOCKER_FINANCE_CONTAINER@|${global_container}|g" \
|
||||
-e "s|@DOCKER_FINANCE_NETWORK@|${global_network}|g" \
|
||||
@@ -674,6 +676,7 @@ function lib_docker::__version()
|
||||
container)
|
||||
# Feed dependency manifest (client is not bind-mounted for security reasons)
|
||||
local _manifest
|
||||
# TODO: use global_repo_manifest
|
||||
_manifest="$(<${DOCKER_FINANCE_CLIENT_REPO}/client/docker-finance.yaml)"
|
||||
|
||||
# NOTE: uses variable "callback"
|
||||
@@ -724,7 +727,7 @@ function lib_docker::__version()
|
||||
|
||||
# TODO: add build type
|
||||
echo
|
||||
echo -e "docker-finance v${DOCKER_FINANCE_VERSION} | commit: $_hash | build: $global_platform"
|
||||
echo -e "docker-finance ${DOCKER_FINANCE_VERSION} | commit: $_hash | build: $global_platform"
|
||||
;;
|
||||
|
||||
*)
|
||||
|
||||
@@ -58,6 +58,14 @@ function lib_gen::gen()
|
||||
{
|
||||
lib_utils::print_debug "Constructing environment"
|
||||
|
||||
# Generate `docker-finance` version
|
||||
global_repo_manifest="$(dirname "$(realpath -s $0)")/docker-finance.yaml"
|
||||
declare -gr global_repo_manifest
|
||||
|
||||
global_client_version="$(grep '^version: ' $global_repo_manifest | sed -e 's/version: "//' -e 's/"//g')"
|
||||
# shellcheck disable=SC2034 # used during env gen
|
||||
declare -gr global_client_version
|
||||
|
||||
# Repository-provided (not user-defined) default environment
|
||||
global_repo_conf_dir="$(dirname "$(realpath -s $0)")/docker-finance.d"
|
||||
declare -gr global_repo_conf_dir
|
||||
@@ -193,9 +201,7 @@ function lib_gen::__set_client_globals()
|
||||
|
||||
function lib_gen::__read_env()
|
||||
{
|
||||
lib_utils::print_debug "Get/Set environment"
|
||||
|
||||
# Unset
|
||||
# Reset environment
|
||||
unset "$(printenv | grep -Eo "^DOCKER_FINANCE[^=]+")"
|
||||
|
||||
# Set, if a script that generates env
|
||||
@@ -207,8 +213,13 @@ function lib_gen::__read_env()
|
||||
|
||||
# Set, if env file format (docker / bash)
|
||||
while read _line; do
|
||||
# Ignore comments, export line
|
||||
# Ignore comments
|
||||
if [[ ! "$_line" =~ ^# ]]; then
|
||||
# Don't allow manipulating version via file
|
||||
if [[ "$_line" =~ ^DOCKER_FINANCE_VERSION ]]; then
|
||||
continue
|
||||
fi
|
||||
# Export valid line
|
||||
export "${_line?}" # SC2163
|
||||
lib_utils::print_debug "$_line"
|
||||
fi
|
||||
@@ -223,7 +234,8 @@ function lib_gen::__write_env()
|
||||
{
|
||||
lib_utils::print_debug "Writing environment"
|
||||
|
||||
printenv | grep "DOCKER_FINANCE" | sort >"$1"
|
||||
unset DOCKER_FINANCE_VERSION # Must be generated internally
|
||||
printenv | grep -E "DOCKER_FINANCE" | sort >"$1"
|
||||
}
|
||||
|
||||
#
|
||||
@@ -480,14 +492,14 @@ function lib_gen::__gen_shell()
|
||||
function lib_gen::__gen_shell_write()
|
||||
{
|
||||
[ -z "$global_repo_conf_dir" ] && lib_utils::die_fatal
|
||||
[ -z "$DOCKER_FINANCE_VERSION" ] && lib_utils::die_fatal
|
||||
|
||||
lib_utils::print_debug "global_repo_conf_dir=${global_repo_conf_dir}"
|
||||
lib_utils::print_debug "DOCKER_FINANCE_VERSION=${DOCKER_FINANCE_VERSION}"
|
||||
|
||||
[ -z "$global_client_version" ] && lib_utils::die_fatal
|
||||
lib_utils::print_debug "global_client_version=${global_client_version}"
|
||||
|
||||
sed \
|
||||
-e "s:@DOCKER_FINANCE_SUBPROFILE_SOURCE@:${_source}:g" \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${DOCKER_FINANCE_VERSION}:g" \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${global_client_version}:g" \
|
||||
"${global_repo_conf_dir}/container/shell/superscript.bash.in" >"$_file"
|
||||
}
|
||||
|
||||
@@ -531,10 +543,14 @@ function lib_gen::__gen_hledger_write()
|
||||
local _file="$1"
|
||||
[ -z "$_file" ] && lib_utils::die_fatal
|
||||
|
||||
[ -z "$DOCKER_FINANCE_VERSION" ] && lib_utils::die_fatal
|
||||
[ -z "$global_repo_conf_dir" ] && lib_utils::die_fatal
|
||||
lib_utils::print_debug "global_repo_conf_dir=${global_repo_conf_dir}"
|
||||
|
||||
[ -z "$global_client_version" ] && lib_utils::die_fatal
|
||||
lib_utils::print_debug "global_client_version=${global_client_version}"
|
||||
|
||||
sed \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${DOCKER_FINANCE_VERSION}:g" \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${global_client_version}:g" \
|
||||
"${global_repo_conf_dir}/container/hledger/hledger.conf.in" >"$_file"
|
||||
}
|
||||
|
||||
@@ -621,7 +637,7 @@ function lib_gen::__gen_flow_shell_write()
|
||||
sed \
|
||||
-e "s:@DOCKER_FINANCE_CONTAINER_CMD@:${DOCKER_FINANCE_CONTAINER_CMD}:g" \
|
||||
-e "s:@DOCKER_FINANCE_CONTAINER_REPO@:${DOCKER_FINANCE_CONTAINER_REPO}:g" \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${DOCKER_FINANCE_VERSION}:g" \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${global_client_version}:g" \
|
||||
-e "s:@DOCKER_FINANCE_PROFILE@:${_profile}:g" \
|
||||
-e "s:@DOCKER_FINANCE_SUBPROFILE@:${_subprofile}:g" \
|
||||
"${global_repo_conf_dir}/container/shell/subprofile.bash.in" >"$_file"
|
||||
@@ -662,16 +678,16 @@ function lib_gen::__gen_flow_fetch()
|
||||
|
||||
function lib_gen::__gen_flow_fetch_write()
|
||||
{
|
||||
[ -z "$DOCKER_FINANCE_VERSION" ] && lib_utils::die_fatal
|
||||
|
||||
[ -z "$_profile" ] && lib_utils::die_fatal
|
||||
[ -z "$_subprofile" ] && lib_utils::die_fatal
|
||||
|
||||
[ -z "$global_repo_conf_dir" ] && lib_utils::die_fatal
|
||||
[ -z "$_file" ] && lib_utils::die_fatal
|
||||
|
||||
[ -z "$global_client_version" ] && lib_utils::die_fatal
|
||||
|
||||
sed \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${DOCKER_FINANCE_VERSION}:g" \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${global_client_version}:g" \
|
||||
-e "s:@DOCKER_FINANCE_PROFILE@:${_profile}:g" \
|
||||
-e "s:@DOCKER_FINANCE_SUBPROFILE@:${_subprofile}:g" \
|
||||
"${global_repo_conf_dir}/container/fetch/fetch.yaml.in" >"$_file"
|
||||
@@ -715,7 +731,7 @@ function lib_gen::__gen_flow_meta_write()
|
||||
# Deletes default comments or else ROOT meta sample won't work out-of-the-box
|
||||
sed \
|
||||
-e "/\/\/\\!/d" \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${DOCKER_FINANCE_VERSION}:g" \
|
||||
-e "s:@DOCKER_FINANCE_VERSION@:${global_client_version}:g" \
|
||||
"${global_repo_conf_dir}/container/meta/meta.csv.in" >"$_file"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user