@ -27,9 +27,6 @@ declare -a dot_env_files=(
/var/www/.env
)
# environment keys seen when source dot files (so we can [export] them)
declare -ga seen_dot_env_variables = ( )
declare -g docker_state_path
docker_state_path = " $( readlink -f ./storage/docker) "
@ -250,13 +247,23 @@ function log-info-stderr()
fi
}
# @description Loads the dot-env files used by Docker and track the keys present in the configuration.
# @sets seen_dot_env_variables array List of config keys discovered during loading
function load-config-files( )
{
# Associative array (aka map/dictionary) holding the unique keys found in dot-env files
local -A _tmp_dot_env_keys
# @description Loads the dot-env files used by Docker
function load-config-files( ) {
local export_vars = 0
load-config-files-impl " $export_vars "
}
# @description Loads the dot-env files used by Docker and exports the variables to subshells
function load-and-export-config-files( ) {
local export_vars = 1
load-config-files-impl " $export_vars "
}
# @description Implementation of the [load-config-files] and [load-and-export-config-files] functions. Loads th
# @arg $1 int Whether to export the variables or just have them available in the current shell
function load-config-files-impl( )
{
local export_vars = ${ 1 :- 0 }
for file in " ${ dot_env_files [@] } " ; do
if ! file-exists " ${ file } " ; then
log-warning " Could not source file [ ${ file } ]: does not exists "
@ -264,19 +271,11 @@ function load-config-files()
fi
log-info " Sourcing ${ file } "
if ( ( export_vars) ) ; then set -o allexport; fi
# shellcheck disable=SC1090
source " ${ file } "
# find all keys in the dot-env file and store them in our temp associative array
for k in $( grep -v '^#' " ${ file } " | cut -d"=" -f1 | xargs) ; do
_tmp_dot_env_keys[ $k ] = 1
done
if ( ( export_vars) ) ; then set +o allexport; fi
done
# Used in other scripts (like templating) for [export]-ing the values
#
# shellcheck disable=SC2034
seen_dot_env_variables = ( " ${ !_tmp_dot_env_keys[@] } " )
}
# @description Checks if $needle exists in $haystack