Fix variable replacement logic for nested variables and remove repo file modification

- Remove localize_deployment call from main flow to avoid modifying repo files
- Enhance localize_yml_file to recursively expand nested variables using envsubst
- Ensure config files contain actual values, not variable names
This commit is contained in:
Kelin
2026-02-02 17:30:24 -05:00
parent fd15c18389
commit 5b5df8960b

View File

@@ -129,13 +129,24 @@ localize_yml_file() {
debug_log "Backed up $file_path"
fi
# Use envsubst to replace all ${VAR} with environment values
# Use envsubst to replace all ${VAR} with environment values, handling nested variables
if command -v envsubst >/dev/null 2>&1; then
log_info "DEBUG: DEFAULT_EMAIL=$DEFAULT_EMAIL"
envsubst < "$file_path" > "$file_path.tmp" && mv "$file_path.tmp" "$file_path"
debug_log "Replaced variables in $file_path using envsubst"
temp_file="$file_path.tmp"
cp "$file_path" "$temp_file"
changed=true
while [ "$changed" = true ]; do
changed=false
new_content=$(envsubst < "$temp_file")
if [ "$new_content" != "$(cat "$temp_file")" ]; then
changed=true
echo "$new_content" > "$temp_file"
fi
done
mv "$temp_file" "$file_path"
debug_log "Replaced variables in $file_path using envsubst with nested expansion"
replaced_count=$(grep -o '\${[^}]*}' "$file_path" | wc -l)
replaced_count=$((replaced_count / 2)) # Approximate, since envsubst replaces all
replaced_count=$((replaced_count / 2)) # Approximate
else
log_warning "envsubst not available, cannot localize $file_path"
if [ "$fail_on_missing" = true ]; then
@@ -1649,9 +1660,6 @@ main() {
# Save configuration
save_env_file
# Perform enhanced placeholder replacement across all config files
localize_deployment
# Validate secrets for core deployment
validate_secrets