#!/bin/sh

set -e

OUT_FILE=/var/www/html/.env.local
TMP_FILE=$(mktemp)

if [ -f /proc/1/environ ]; then
    echo "Importing environment variables from /proc/1/environ..."

    tr '\0' '\n' < /proc/1/environ | awk -F= '
    BEGIN {
        split("PATH HOME USER PWD SHELL SHLVL HOSTNAME TERM LOGNAME LANG TZ REGION_NAME NUM_CORES DOCKER_ENABLE_CI COMPUTERNAME REMOTEDEBUGGINGVERSION ScmType PLATFORM_VERSION", e, " ")
        for (i in e) exact[e[i]] = 1

        split("_ LC_ MOTD_ SSH_ PHPIZE_ GPG_ PHP_ APACHE_ COMPOSER_ APPSETTING_ WEBSITE_  WEBSITES_ AZUREBLOBSTORAGE_ AZUREFILESSTORAGE_ FUNCTIONS_RUNTIME_", p, " ")
        for (i in p) prefixes[p[i]] = 1
    }
    {
        var = $1
        # Exact match exclusion
        if (var in exact) next

        skip = 0
        for (pfx in prefixes) {
            if (index(var, pfx) == 1) { skip=1; break }
        }
        if (skip) next

        value = substr($0, length(var)+2)
        gsub(/"/, "\\\"", value)

        if (var == "DATABASE_URL") {
            dburl = sprintf("%s=\"%s\"\n", var, value)
            next
        }

        printf "%s=\"%s\"\n", var, value
    }
    END {
        # always put DATABASE_URL at the very end if present
        if (dburl != "") printf "%s", dburl
    }
    ' > "$TMP_FILE"
fi

# Deduplicate, keeping the last occurrence
tac "$TMP_FILE" | awk -F= '!seen[$1]++' | tac > "$OUT_FILE"

rm "$TMP_FILE"

echo "Merged Azure env (priority) and .env into $OUT_FILE"
