refactor: streamline environment variable loading with dedicated function
This commit is contained in:
@@ -38,22 +38,22 @@ fi
|
||||
# ---------------------------------------------------------------------------
|
||||
# Load current values
|
||||
# ---------------------------------------------------------------------------
|
||||
declare -A CURRENT_VALUES
|
||||
while IFS= read -r line; do
|
||||
# Skip comments and blank lines
|
||||
[[ "$line" =~ ^[[:space:]]*# ]] && continue
|
||||
[[ -z "$line" ]] && continue
|
||||
# Extract KEY=VALUE (strip inline comments)
|
||||
if [[ "$line" =~ ^([A-Za-z_][A-Za-z0-9_]*)=(.*) ]]; then
|
||||
key="${BASH_REMATCH[1]}"
|
||||
val="${BASH_REMATCH[2]}"
|
||||
# Strip inline comment (everything after # preceded by spaces)
|
||||
# Lookup a variable's current value from .env (bash 3.2 compatible — no assoc arrays)
|
||||
get_env_val() {
|
||||
local key="$1" default="${2:-}"
|
||||
local line val
|
||||
line=$(grep "^${key}=" "$ENV_FILE" 2>/dev/null | head -1) || true
|
||||
if [[ -z "$line" ]]; then
|
||||
printf '%s' "$default"
|
||||
return 0
|
||||
fi
|
||||
val="${line#*=}"
|
||||
# Strip inline comment
|
||||
val="${val%%#*}"
|
||||
# Trim trailing whitespace
|
||||
val="${val%"${val##*[![:space:]]}"}"
|
||||
CURRENT_VALUES["$key"]="$val"
|
||||
fi
|
||||
done < "$ENV_FILE"
|
||||
printf '%s' "$val"
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Validation functions — sourced from lib/common.sh (validate_ip, validate_port,
|
||||
@@ -87,7 +87,8 @@ prompt_var() {
|
||||
fi
|
||||
|
||||
# Determine current value (from .env or default)
|
||||
local current="${CURRENT_VALUES[$var_name]:-$default}"
|
||||
local current
|
||||
current=$(get_env_val "$var_name" "$default")
|
||||
|
||||
# Build prompt
|
||||
local progress
|
||||
@@ -317,11 +318,11 @@ printf '%b║ Configuration Complete ║%b\n'
|
||||
printf '%b╚══════════════════════════════════════════════════════════╝%b\n\n' "$C_GREEN" "$C_RESET"
|
||||
|
||||
printf '%bSummary:%b\n' "$C_BOLD" "$C_RESET"
|
||||
printf ' Unraid: %s@%s:%s\n' "${CURRENT_VALUES[UNRAID_SSH_USER]:-}" "${CURRENT_VALUES[UNRAID_IP]:-}" "${CURRENT_VALUES[UNRAID_SSH_PORT]:-22}"
|
||||
printf ' Fedora: %s@%s:%s\n' "${CURRENT_VALUES[FEDORA_SSH_USER]:-}" "${CURRENT_VALUES[FEDORA_IP]:-}" "${CURRENT_VALUES[FEDORA_SSH_PORT]:-22}"
|
||||
printf ' Gitea: %s (admin: %s, password: ****)\n' "${CURRENT_VALUES[GITEA_DOMAIN]:-}" "${CURRENT_VALUES[GITEA_ADMIN_USER]:-}"
|
||||
printf ' Org: %s\n' "${CURRENT_VALUES[GITEA_ORG_NAME]:-}"
|
||||
printf ' Repos: %s, %s, %s\n' "${CURRENT_VALUES[REPO_1_NAME]:-}" "${CURRENT_VALUES[REPO_2_NAME]:-}" "${CURRENT_VALUES[REPO_3_NAME]:-}"
|
||||
printf ' Unraid: %s@%s:%s\n' "$(get_env_val UNRAID_SSH_USER)" "$(get_env_val UNRAID_IP)" "$(get_env_val UNRAID_SSH_PORT 22)"
|
||||
printf ' Fedora: %s@%s:%s\n' "$(get_env_val FEDORA_SSH_USER)" "$(get_env_val FEDORA_IP)" "$(get_env_val FEDORA_SSH_PORT 22)"
|
||||
printf ' Gitea: %s (admin: %s, password: ****)\n' "$(get_env_val GITEA_DOMAIN)" "$(get_env_val GITEA_ADMIN_USER)"
|
||||
printf ' Org: %s\n' "$(get_env_val GITEA_ORG_NAME)"
|
||||
printf ' Repos: %s, %s, %s\n' "$(get_env_val REPO_1_NAME)" "$(get_env_val REPO_2_NAME)" "$(get_env_val REPO_3_NAME)"
|
||||
printf ' SSL: %s\n' "${COLLECTED_SSL_MODE}"
|
||||
printf ' .env saved: %s\n\n' "$ENV_FILE"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user