Initial commit: add .gitignore and README
This commit is contained in:
65
lib/config/env.sh
Executable file
65
lib/config/env.sh
Executable file
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
# Environment loading functions
|
||||
# Usage: source "$(dirname "$0")/env.sh"
|
||||
# Requires: logging.sh, utils.sh
|
||||
|
||||
# Load environment file
|
||||
load_env() {
|
||||
local env_file="${1:-.env}"
|
||||
local project_root="${PROJECT_ROOT:-$(get_project_root)}"
|
||||
local full_path="$project_root/$env_file"
|
||||
|
||||
if [ -f "$full_path" ]; then
|
||||
log_debug "Loading environment from: $full_path"
|
||||
set -a
|
||||
source "$full_path"
|
||||
set +a
|
||||
return 0
|
||||
else
|
||||
log_debug "Environment file not found: $full_path"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Require environment variable
|
||||
require_env() {
|
||||
local var_name="$1"
|
||||
local var_value="${!var_name}"
|
||||
|
||||
if [ -z "$var_value" ]; then
|
||||
log_error "Required environment variable not set: $var_name"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_debug "Environment variable $var_name is set"
|
||||
}
|
||||
|
||||
# Require multiple environment variables
|
||||
require_envs() {
|
||||
local missing_vars=()
|
||||
|
||||
for var_name in "$@"; do
|
||||
if [ -z "${!var_name}" ]; then
|
||||
missing_vars+=("$var_name")
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${#missing_vars[@]} -gt 0 ]; then
|
||||
log_error "Missing required environment variables: ${missing_vars[*]}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Get environment variable with default
|
||||
get_env() {
|
||||
local var_name="$1"
|
||||
local default_value="${2:-}"
|
||||
local var_value="${!var_name:-$default_value}"
|
||||
|
||||
if [ -z "$var_value" ] && [ -z "$default_value" ]; then
|
||||
log_warn "Environment variable $var_name is not set and no default provided"
|
||||
fi
|
||||
|
||||
echo "$var_value"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user