FROM        --platform=$TARGETOS/$TARGETARCH ghcr.io/2sharkystudios/yolks:ubuntu

LABEL       author="Kyle Speight" maintainer="chillcog3142@proton.me"

ENV         DEBIAN_FRONTEND=noninteractive

# 1. Install prerequisites
RUN         apt-get update && apt-get install -y \
            ca-certificates \
            gnupg \
            lsb-release \
            wget \
            curl \
            && rm -rf /var/lib/apt/lists/*

# 2. Install .NET SDK
RUN         wget -q https://dot.net/v1/dotnet-install.sh \
            && chmod +x dotnet-install.sh \
            && D_V="$(curl -sSL https://dotnet.microsoft.com/en-us/download/dotnet/9.0 | grep -i '<h3 id="sdk-9.*">SDK 9.*.*</h3>' | head -1 | awk -F\" '{print $3}' | awk '{print $2;}' | sed 's/<\/h3>//g')" \
            && ./dotnet-install.sh -i /usr/share -v "$D_V" \
            && ln -s /usr/share/dotnet /usr/bin/dotnet \
            && rm dotnet-install.sh

# 3. Install PowerShell (FIXED: Map 'noble' to 'ubuntu24.04')
# Instead of directly using the lsb_release codename, explicitly map it or use a fallback
RUN mkdir -p /etc/apt/keyrings \
    && curl -sSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /etc/apt/keyrings/microsoft-prod.gpg \
    && MS_CODENAME="$(lsb_release -cs)" \
    && if [ "$MS_CODENAME" = "noble" ]; then MS_CODENAME="jammy"; fi \
    && echo "deb [arch=amd64,arm64 signed-by=/etc/apt/keyrings/microsoft-prod.gpg] https://packages.microsoft.com/repos/microsoft-ubuntu${MS_CODENAME}-prod ${MS_CODENAME} main" | tee /etc/apt/sources.list.d/microsoft-ubuntu-prod.list \
    && apt-get update \
    && apt-get install -y powershell \
    && rm -rf /var/lib/apt/lists/*

# 4. Install remaining dependencies
RUN         apt-get update && apt-get install -y \
            git \
            git-lfs \
            iproute2 \
            libgdiplus \
            tini \
            software-properties-common \
            && rm -rf /var/lib/apt/lists/*

# 5. Clone, Build, and Cleanup
RUN         mkdir -p /workspace/ /build/ \
            && cd /workspace \
            && git clone https://github.com/2SharkyStudios/SPT-Server-Build.git /workspace/git \
            && cd /workspace/git/ \
            && git lfs pull \
            && cd /workspace/git/SPTarkov.Server/ \
            && dotnet restore \
            && dotnet publish -o /build/ -c Release -p:SptBuildType=RELEASE -p:SptVersion=4.0.11 \
            && rm -rf /workspace/

# 6. Move build output to user home
RUN         mv /build/* /home/container/ 2>/dev/null || true \
            && chown -R container:container /home/container/

USER        container
ENV         USER=container HOME=/home/container
WORKDIR     /home/container

STOPSIGNAL SIGINT

COPY        --chown=container:container ./../entrypoint.sh /entrypoint.sh
RUN         chmod +x /entrypoint.sh

ENTRYPOINT    ["/usr/bin/tini", "-g", "--"]
CMD         ["/entrypoint.sh"]
