Scoped environment config loading

Port in https://github.com/davidalger/warden/pull/451

Signed-off-by: Navarr <navarr@swiftotter.com>
This commit is contained in:
Timon de Groot authored and Navarr Barnier committed 2023-01-16 23:03:17 -05:00
1 parent efb2cd6ad9
commit 5a24ca7d50
10 files changed
+214 -153

No files matched your search

+6 -147
View File
@@ -45,150 +45,9 @@ TRAEFIK_DOMAIN=${WARDEN_ENV_NAME}.test
TRAEFIK_SUBDOMAIN=app
EOF
if [[ "${WARDEN_ENV_TYPE}" == "magento1" ]]; then
cat >> "${WARDEN_ENV_PATH}/.env" <<-EOT
WARDEN_DB=1
WARDEN_REDIS=1
MYSQL_DISTRIBUTION=mariadb
MYSQL_DISTRIBUTION_VERSION=10.3
NODE_VERSION=12
COMPOSER_VERSION=2
PHP_VERSION=7.2
PHP_XDEBUG_3=1
REDIS_VERSION=5.0
WARDEN_SELENIUM=0
WARDEN_SELENIUM_DEBUG=0
WARDEN_BLACKFIRE=0
BLACKFIRE_CLIENT_ID=
BLACKFIRE_CLIENT_TOKEN=
BLACKFIRE_SERVER_ID=
BLACKFIRE_SERVER_TOKEN=
EOT
fi
if [[ "${WARDEN_ENV_TYPE}" == "magento2" ]]; then
cat >> "${WARDEN_ENV_PATH}/.env" <<-EOT
WARDEN_DB=1
WARDEN_ELASTICSEARCH=1
WARDEN_ELASTICHQ=0
WARDEN_VARNISH=1
WARDEN_RABBITMQ=1
WARDEN_REDIS=1
ELASTICSEARCH_VERSION=7.6
MYSQL_DISTRIBUTION=mariadb
MYSQL_DISTRIBUTION_VERSION=10.3
NODE_VERSION=12
COMPOSER_VERSION=2
PHP_VERSION=8.1
PHP_XDEBUG_3=1
RABBITMQ_VERSION=3.8
REDIS_VERSION=5.0
VARNISH_VERSION=6.0
WARDEN_SYNC_IGNORE=
WARDEN_ALLURE=0
WARDEN_SELENIUM=0
WARDEN_SELENIUM_DEBUG=0
WARDEN_BLACKFIRE=0
WARDEN_SPLIT_SALES=0
WARDEN_SPLIT_CHECKOUT=0
WARDEN_TEST_DB=0
WARDEN_MAGEPACK=0
BLACKFIRE_CLIENT_ID=
BLACKFIRE_CLIENT_TOKEN=
BLACKFIRE_SERVER_ID=
BLACKFIRE_SERVER_TOKEN=
EOT
fi
if [[ "${WARDEN_ENV_TYPE}" == "laravel" ]]; then
cat >> "${WARDEN_ENV_PATH}/.env" <<-EOT
MYSQL_DISTRIBUTION=mariadb
MYSQL_DISTRIBUTION_VERSION=10.4
NODE_VERSION=12
COMPOSER_VERSION=2
PHP_VERSION=8.1
PHP_XDEBUG_3=1
REDIS_VERSION=5.0
WARDEN_DB=1
WARDEN_REDIS=1
## Laravel Config
APP_URL=http://app.${WARDEN_ENV_NAME}.test
APP_KEY=base64:$(dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64)
APP_ENV=local
APP_DEBUG=true
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel
CACHE_DRIVER=redis
SESSION_DRIVER=redis
REDIS_HOST=redis
REDIS_PORT=6379
MAIL_DRIVER=sendmail
EOT
fi
if [[ "${WARDEN_ENV_TYPE}" =~ ^symfony|shopware$ ]]; then
cat >> "${WARDEN_ENV_PATH}/.env" <<-EOT
WARDEN_DB=1
WARDEN_REDIS=1
WARDEN_RABBITMQ=0
WARDEN_ELASTICSEARCH=0
WARDEN_VARNISH=0
MYSQL_DISTRIBUTION=mariadb
MYSQL_DISTRIBUTION_VERSION=10.4
NODE_VERSION=12
COMPOSER_VERSION=2
PHP_VERSION=8.0
PHP_XDEBUG_3=1
RABBITMQ_VERSION=3.8
REDIS_VERSION=5.0
VARNISH_VERSION=6.0
EOT
fi
if [[ "${WARDEN_ENV_TYPE}" == "wordpress" ]]; then
cat >> "${WARDEN_ENV_PATH}/.env" <<-EOT
MYSQL_DISTRIBUTION=mariadb
MYSQL_DISTRIBUTION_VERSION=10.4
NODE_VERSION=12
COMPOSER_VERSION=2
PHP_VERSION=8.0
PHP_XDEBUG_3=1
WARDEN_DB=1
WARDEN_REDIS=0
APP_ENV=local
APP_DEBUG=true
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=wordpress
DB_USERNAME=wordpress
DB_PASSWORD=wordpress
EOT
fi
ENV_INIT_FILE=$(fetchEnvInitFile)
if [[ ! -z $ENV_INIT_FILE ]]; then
export WARDEN_ENV_NAME
export GENERATED_APP_KEY="base64:$(dd if=/dev/urandom bs=1 count=32 2>/dev/null | base64)"
envsubst '$WARDEN_ENV_NAME:$GENERATED_APP_KEY' < "${ENV_INIT_FILE}" >> "${WARDEN_ENV_PATH}/.env"
fi
+8
View File
@@ -168,6 +168,14 @@ export TRAEFIK_ADDRESS="$(docker container inspect traefik \
if [[ $OSTYPE =~ ^darwin ]]; then
export MUTAGEN_SYNC_FILE="${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml"
if [[ -f "${WARDEN_HOME_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml" ]]; then
export MUTAGEN_SYNC_FILE="${WARDEN_HOME_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml"
fi
if [[ -f "${WARDEN_ENV_PATH}/.warden/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml" ]]; then
export MUTAGEN_SYNC_FILE="${WARDEN_ENV_PATH}/.warden/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml"
fi
if [[ -f "${WARDEN_ENV_PATH}/.warden/mutagen.yml" ]]; then
export MUTAGEN_SYNC_FILE="${WARDEN_ENV_PATH}/.warden/mutagen.yml"
fi
+8
View File
@@ -31,6 +31,14 @@ fi
if [[ $OSTYPE =~ ^darwin && -z "${MUTAGEN_SYNC_FILE}" ]]; then
export MUTAGEN_SYNC_FILE="${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml"
if [[ -f "${WARDEN_HOME_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml" ]]; then
export MUTAGEN_SYNC_FILE="${WARDEN_HOME_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml"
fi
if [[ -f "${WARDEN_ENV_PATH}/.warden/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml" ]]; then
export MUTAGEN_SYNC_FILE="${WARDEN_ENV_PATH}/.warden/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.mutagen.yml"
fi
if [[ -f "${WARDEN_ENV_PATH}/.warden/mutagen.yml" ]]; then
export MUTAGEN_SYNC_FILE="${WARDEN_ENV_PATH}/.warden/mutagen.yml"
fi
+33
View File
@@ -0,0 +1,33 @@
DB_DISTRIBUTION=mariadb
DB_DISTRIBUTION_VERSION=10.4
NODE_VERSION=12
COMPOSER_VERSION=1
PHP_VERSION=7.4
PHP_XDEBUG_3=1
REDIS_VERSION=5.0
WARDEN_DB=1
WARDEN_REDIS=1
## Laravel Config
APP_URL=http://app.$WARDEN_ENV_NAME.test
APP_KEY=$GENERATED_APP_KEY
APP_ENV=local
APP_DEBUG=true
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=laravel
CACHE_DRIVER=redis
SESSION_DRIVER=redis
REDIS_HOST=redis
REDIS_PORT=6379
MAIL_DRIVER=sendmail
+21
View File
@@ -0,0 +1,21 @@
WARDEN_DB=1
WARDEN_REDIS=1
DB_DISTRIBUTION=mariadb
MARIADB_VERSION=10.3
NODE_VERSION=12
COMPOSER_VERSION=1
PHP_VERSION=7.2
PHP_XDEBUG_3=1
REDIS_VERSION=5.0
WARDEN_SELENIUM=0
WARDEN_SELENIUM_DEBUG=0
WARDEN_BLACKFIRE=0
BLACKFIRE_CLIENT_ID=
BLACKFIRE_CLIENT_TOKEN=
BLACKFIRE_SERVER_ID=
BLACKFIRE_SERVER_TOKEN=
+35
View File
@@ -0,0 +1,35 @@
WARDEN_DB=1
WARDEN_ELASTICSEARCH=1
WARDEN_ELASTICHQ=0
WARDEN_VARNISH=1
WARDEN_RABBITMQ=1
WARDEN_REDIS=1
ELASTICSEARCH_VERSION=7.6
DB_DISTRIBUTION=mariadb
DB_DISTRIBUTION_VERSION=10.3
NODE_VERSION=12
COMPOSER_VERSION=1
PHP_VERSION=7.4
PHP_XDEBUG_3=1
RABBITMQ_VERSION=3.8
REDIS_VERSION=5.0
VARNISH_VERSION=6.0
WARDEN_SYNC_IGNORE=
WARDEN_ALLURE=0
WARDEN_SELENIUM=0
WARDEN_SELENIUM_DEBUG=0
WARDEN_BLACKFIRE=0
WARDEN_SPLIT_SALES=0
WARDEN_SPLIT_CHECKOUT=0
WARDEN_TEST_DB=0
WARDEN_MAGEPACK=0
BLACKFIRE_CLIENT_ID=
BLACKFIRE_CLIENT_TOKEN=
BLACKFIRE_SERVER_ID=
BLACKFIRE_SERVER_TOKEN=
+17
View File
@@ -0,0 +1,17 @@
WARDEN_DB=1
WARDEN_REDIS=1
WARDEN_RABBITMQ=0
WARDEN_ELASTICSEARCH=0
WARDEN_VARNISH=0
DB_DISTRIBUTION=mariadb
DB_DISTRIBUTION_VERSION=10.4
NODE_VERSION=12
COMPOSER_VERSION=2
PHP_VERSION=7.4
PHP_XDEBUG_3=1
RABBITMQ_VERSION=3.8
REDIS_VERSION=5.0
VARNISH_VERSION=6.0
+17
View File
@@ -0,0 +1,17 @@
WARDEN_DB=1
WARDEN_REDIS=1
WARDEN_RABBITMQ=0
WARDEN_ELASTICSEARCH=0
WARDEN_VARNISH=0
DB_DISTRIBUTION=mariadb
DB_DISTRIBUTION_VERSION=10.4
NODE_VERSION=12
COMPOSER_VERSION=2
PHP_VERSION=7.4
PHP_XDEBUG_3=1
RABBITMQ_VERSION=3.8
REDIS_VERSION=5.0
VARNISH_VERSION=6.0
+20
View File
@@ -0,0 +1,20 @@
DB_DISTRIBUTION=mariadb
DB_DISTRIBUTION_VERSION=10.4
NODE_VERSION=12
COMPOSER_VERSION=1
PHP_VERSION=7.4
PHP_XDEBUG_3=1
WARDEN_DB=1
WARDEN_REDIS=0
APP_ENV=local
APP_DEBUG=true
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=wordpress
DB_USERNAME=wordpress
DB_PASSWORD=wordpress
+49 -6
View File
@@ -60,19 +60,58 @@ function renderEnvNetworkName() {
echo "${WARDEN_ENV_NAME}_default" | tr '[:upper:]' '[:lower:]'
}
function fetchEnvInitFile () {
local envInitPath=""
for ENV_INIT_PATH in \
"${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}/init.env" \
"${WARDEN_HOME_DIR}/environments/${WARDEN_ENV_TYPE}/init.env" \
"${WARDEN_ENV_PATH}/.warden/environments/${WARDEN_ENV_TYPE}/init.env"
do
if [[ -f "${ENV_INIT_PATH}" ]]; then
envInitPath="${ENV_INIT_PATH}"
fi
done
echo $envInitPath
}
function fetchValidEnvTypes () {
local lsPaths="${WARDEN_DIR}/environments/"*/*".base.yml"
if [[ -d "${WARDEN_HOME_DIR}/environments" ]]; then
lsPaths="${lsPaths} ${WARDEN_HOME_DIR}/environments/"*/*".base.yml"
fi
if [[ -d "${WARDEN_ENV_PATH}/.warden/environments" ]]; then
lsPaths="${lsPaths} ${WARDEN_ENV_PATH}/.warden/environments/"*/*".base.yml"
fi
echo $(
ls -1 "${WARDEN_DIR}/environments/"*/*".base.yml" \
ls -1 $lsPaths \
| sed -E "s#^${WARDEN_DIR}/environments/##" \
| cut -d/ -f1 | uniq | sort | grep -v includes
| sed -E "s#^${WARDEN_HOME_DIR}/environments/##" \
| sed -E "s#^${WARDEN_ENV_PATH}/.warden/environments/##" \
| cut -d/ -f1 | sort | uniq | grep -v includes
)
}
function assertValidEnvType () {
if [[ ! -f "${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.base.yml" ]]; then
>&2 echo -e "\033[31mInvalid environment type \"${WARDEN_ENV_TYPE}\" specified.\033[0m"
return 1
if [[ -f "${WARDEN_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.base.yml" ]]; then
return 0
fi
if [[ -f "${WARDEN_HOME_DIR}/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.base.yml" ]]; then
return 0
fi
if [[ -f "${WARDEN_ENV_PATH}/.warden/environments/${WARDEN_ENV_TYPE}/${WARDEN_ENV_TYPE}.base.yml" ]]; then
return 0
fi
>&2 echo -e "\033[31mInvalid environment type \"${WARDEN_ENV_TYPE}\" specified.\033[0m"
return 1
}
function appendEnvPartialIfExists () {
@@ -87,7 +126,11 @@ function appendEnvPartialIfExists () {
"${WARDEN_HOME_DIR}/environments/includes/${PARTIAL_NAME}.base.yml" \
"${WARDEN_HOME_DIR}/environments/includes/${PARTIAL_NAME}.${WARDEN_ENV_SUBT}.yml" \
"${WARDEN_HOME_DIR}/environments/${WARDEN_ENV_TYPE}/${PARTIAL_NAME}.base.yml" \
"${WARDEN_HOME_DIR}/environments/${WARDEN_ENV_TYPE}/${PARTIAL_NAME}.${WARDEN_ENV_SUBT}.yml"
"${WARDEN_HOME_DIR}/environments/${WARDEN_ENV_TYPE}/${PARTIAL_NAME}.${WARDEN_ENV_SUBT}.yml" \
"${WARDEN_ENV_PATH}/.warden/environments/includes/${PARTIAL_NAME}.base.yml" \
"${WARDEN_ENV_PATH}/.warden/environments/includes/${PARTIAL_NAME}.${WARDEN_ENV_SUBT}.yml" \
"${WARDEN_ENV_PATH}/.warden/environments/${WARDEN_ENV_TYPE}/${PARTIAL_NAME}.base.yml" \
"${WARDEN_ENV_PATH}/.warden/environments/${WARDEN_ENV_TYPE}/${PARTIAL_NAME}.${WARDEN_ENV_SUBT}.yml"
do
if [[ -f "${PARTIAL_PATH}" ]]; then
DOCKER_COMPOSE_ARGS+=("-f" "${PARTIAL_PATH}")