diff --git a/commands/env-init.cmd b/commands/env-init.cmd index 918d793..ad769c8 100644 --- a/commands/env-init.cmd +++ b/commands/env-init.cmd @@ -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 \ No newline at end of file diff --git a/commands/env.cmd b/commands/env.cmd index 7761fb8..556a6b1 100644 --- a/commands/env.cmd +++ b/commands/env.cmd @@ -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 diff --git a/commands/sync.cmd b/commands/sync.cmd index d1d1e07..a9b3334 100644 --- a/commands/sync.cmd +++ b/commands/sync.cmd @@ -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 diff --git a/environments/laravel/init.env b/environments/laravel/init.env new file mode 100644 index 0000000..53cb388 --- /dev/null +++ b/environments/laravel/init.env @@ -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 diff --git a/environments/magento1/init.env b/environments/magento1/init.env new file mode 100644 index 0000000..89891ff --- /dev/null +++ b/environments/magento1/init.env @@ -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= + diff --git a/environments/magento2/init.env b/environments/magento2/init.env new file mode 100644 index 0000000..dc80672 --- /dev/null +++ b/environments/magento2/init.env @@ -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= + diff --git a/environments/shopware/init.env b/environments/shopware/init.env new file mode 100644 index 0000000..6fcfc1d --- /dev/null +++ b/environments/shopware/init.env @@ -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 + diff --git a/environments/symfony/init.env b/environments/symfony/init.env new file mode 100644 index 0000000..6fcfc1d --- /dev/null +++ b/environments/symfony/init.env @@ -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 + diff --git a/environments/wordpress/init.env b/environments/wordpress/init.env new file mode 100644 index 0000000..0c1f674 --- /dev/null +++ b/environments/wordpress/init.env @@ -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 diff --git a/utils/env.sh b/utils/env.sh index c390071..598021d 100644 --- a/utils/env.sh +++ b/utils/env.sh @@ -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}")