fix(scripts): ensure postgres env aliases during restore
This commit is contained in:
@@ -62,6 +62,59 @@ restore_env_if_present() {
|
||||
fi
|
||||
}
|
||||
|
||||
env_value() {
|
||||
local key="$1"
|
||||
local file="$2"
|
||||
|
||||
awk -v key="$key" '
|
||||
$0 ~ "^[[:space:]]*" key "=" {
|
||||
sub(/^[^=]*=/, "")
|
||||
print
|
||||
exit
|
||||
}
|
||||
' "$file"
|
||||
}
|
||||
|
||||
set_env_value() {
|
||||
local key="$1"
|
||||
local value="$2"
|
||||
local file="$3"
|
||||
local tmp_path
|
||||
|
||||
tmp_path="$(mktemp)"
|
||||
awk -v key="$key" -v value="$value" '
|
||||
$0 ~ "^[[:space:]]*" key "=" {
|
||||
print key "=" value
|
||||
found = 1
|
||||
next
|
||||
}
|
||||
{ print }
|
||||
END {
|
||||
if (!found) {
|
||||
print key "=" value
|
||||
}
|
||||
}
|
||||
' "$file" > "$tmp_path"
|
||||
mv "$tmp_path" "$file"
|
||||
chmod 600 "$file" || true
|
||||
}
|
||||
|
||||
sync_postgres_env_aliases() {
|
||||
local db_name db_user db_password
|
||||
|
||||
db_name="$(env_value DB_NAME "$BACKEND_ENV")"
|
||||
db_user="$(env_value DB_USER "$BACKEND_ENV")"
|
||||
db_password="$(env_value DB_PASSWORD "$BACKEND_ENV")"
|
||||
|
||||
[[ -n "$db_name" ]] || fail "DB_NAME is missing or empty in $BACKEND_ENV"
|
||||
[[ -n "$db_user" ]] || fail "DB_USER is missing or empty in $BACKEND_ENV"
|
||||
[[ -n "$db_password" ]] || fail "DB_PASSWORD is missing or empty in $BACKEND_ENV"
|
||||
|
||||
set_env_value POSTGRES_DB "$db_name" "$BACKEND_ENV"
|
||||
set_env_value POSTGRES_USER "$db_user" "$BACKEND_ENV"
|
||||
set_env_value POSTGRES_PASSWORD "$db_password" "$BACKEND_ENV"
|
||||
}
|
||||
|
||||
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
|
||||
usage
|
||||
exit 0
|
||||
@@ -99,6 +152,9 @@ fi
|
||||
require_file "$BACKEND_ENV"
|
||||
require_file "$DEPLOY_ENV"
|
||||
|
||||
log "Ensuring PostgreSQL environment aliases exist"
|
||||
sync_postgres_env_aliases
|
||||
|
||||
log "Checking Docker Compose configuration"
|
||||
compose config -q
|
||||
|
||||
|
||||
Reference in New Issue
Block a user