From a34cc696815ea50e7cabce24ca371c6e8d530746 Mon Sep 17 00:00:00 2001 From: S Date: Sun, 1 Mar 2026 08:40:25 -0500 Subject: [PATCH] refactor: streamline environment variable loading with dedicated function --- setup/configure_env.sh | 43 +++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/setup/configure_env.sh b/setup/configure_env.sh index 2fc3021..c1554f1 100755 --- a/setup/configure_env.sh +++ b/setup/configure_env.sh @@ -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) - val="${val%%#*}" - # Trim trailing whitespace - val="${val%"${val##*[![:space:]]}"}" - CURRENT_VALUES["$key"]="$val" +# 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 -done < "$ENV_FILE" + val="${line#*=}" + # Strip inline comment + val="${val%%#*}" + # Trim trailing whitespace + val="${val%"${val##*[![:space:]]}"}" + 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"