92 lines
2.3 KiB
Bash
92 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
function env::on_load() {
|
|
env::defaults
|
|
env::load_globals
|
|
}
|
|
|
|
function env::artifact::path() { path::relative_to_root "$(ctx::artifact::path env)"; }
|
|
function env::artifact::resolved() { path::relative_to_root "$(ctx::artifact::path env)/${ENVIRONMENT}.resolved.env"; }
|
|
function env::project::name() { echo "${PROJECT_NAME}"; }
|
|
|
|
# ============================================
|
|
# Defaults
|
|
# ============================================
|
|
|
|
function env::defaults() {
|
|
: "${PROJECT_NAME:=$(basename "$(ctx::root)")}"
|
|
: "${APP_FRAMEWORK:=yii2-advanced}"
|
|
: "${APP_PORT:=auto:8080}"
|
|
: "${TLD:="lan"}"
|
|
: "${DB_DRIVER:=db}"
|
|
: "${DB_IMAGE:=mariadb:latest}"
|
|
: "${DB_ENGINE:=mysql}"
|
|
: "${DB_PORT:=auto}"
|
|
: "${PROXY_SERVICE:=traefik}"
|
|
: "${PROXY_NETWORK:=proxy}"
|
|
|
|
# Environment
|
|
: "${ENVIRONMENT:=dev}"
|
|
}
|
|
|
|
function env::defaults::derived() {
|
|
APP_IMAGE="${APP_IMAGE:-${PROJECT_NAME}-app}"
|
|
DB_NAME="${DB_NAME:-${PROJECT_NAME}}"
|
|
DB_HOST="${DB_HOST:-${PROJECT_NAME}-${DB_DRIVER}}"
|
|
DOMAIN="${DOMAIN:-${PROJECT_NAME}.${TLD}}"
|
|
BACKEND_DOMAIN="${BACKEND_DOMAIN:-admin.${DOMAIN}}"
|
|
}
|
|
|
|
# ============================================
|
|
|
|
function env::load_globals() {
|
|
load_file required "$(ctx::env)/globals.env";
|
|
env::defaults::derived
|
|
}
|
|
|
|
function env::load_environment() {
|
|
load_file optional "$(ctx::artifact::path env)/${ENVIRONMENT}.env"
|
|
env::defaults::derived
|
|
}
|
|
|
|
function env::load_environment_resolved() {
|
|
load_file optional "$(env::artifact::resolved)"
|
|
}
|
|
|
|
function env::load_env_files() {
|
|
set -a
|
|
|
|
env::load_globals || { set +a; exit 1; }
|
|
env::load_environment
|
|
env::load_environment_resolved
|
|
|
|
set +a
|
|
}
|
|
|
|
function env::set_env_var() {
|
|
local key="$1"
|
|
local value="$2"
|
|
local file="${3:-$(ctx::artifact::path env)/${ENVIRONMENT}.env}"
|
|
|
|
touch "$file"
|
|
|
|
if grep -q "^${key}=" "$file"; then
|
|
fs::sed_inplace "s/^${key}=.*/${key}=${value}/" "$file"
|
|
else
|
|
printf "\n%s=%s" "$key" "$value" >> "$file"
|
|
fi
|
|
}
|
|
|
|
# ============================================
|
|
# Derived
|
|
# ============================================
|
|
|
|
function env::derive() {
|
|
APP_IMAGE="${PROJECT_NAME}-app"
|
|
DOMAIN="${PROJECT_NAME}.${TLD}"
|
|
BACKEND_DOMAIN="admin-${PROJECT_NAME}.${TLD}"
|
|
DB_HOST="${PROJECT_NAME}-db"
|
|
DB_NAME="${PROJECT_NAME}"
|
|
|
|
export APP_IMAGE DOMAIN BACKEND_DOMAIN DB_HOST DB_NAME
|
|
}
|