FROM --platform=$BUILDPLATFORM golang:1.24 AS build

ARG TARGETOS TARGETARCH TARGETVARIANT
ARG GOOS=$TARGETOS
ARG GOARCH=$TARGETARCH

RUN apt-get update && \
    apt-get install -y --no-install-recommends ca-certificates && \
    case "$TARGETARCH$TARGETVARIANT" in \
        "arm64")   apt-get install -y gcc-aarch64-linux-gnu ;; \
        "armv7")   apt-get install -y gcc-arm-linux-gnueabihf ;; \
        "riscv64") apt-get install -y gcc-riscv64-linux-gnu ;; \
        "amd64")   apt-get install -y gcc-x86-64-linux-gnu ;; \
        *)         echo "Arch '$TARGETARCH$TARGETVARIANT' not supported" && exit 1 ;; \
    esac

WORKDIR /tmp/app
COPY . .
RUN go mod download && \
    case "$TARGETARCH$TARGETVARIANT" in \
        "arm64")   export CC="aarch64-linux-gnu-gcc" PIE=true ;; \
        "armv7")   export CC="arm-linux-gnueabihf-gcc" GOARM="7" ;; \
        "riscv64") export CC="riscv64-linux-gnu-gcc" ;; \
        "amd64")   export CC="x86_64-linux-gnu-gcc" PIE=true ;; \
        *)         echo "Arch '$TARGETARCH$TARGETVARIANT' not supported" && exit 1 ;; \
    esac && \
    export CGO_ENABLED=1 LDFLAGS="-s -w -linkmode 'external'" && \
    if [ "$PIE" = "true" ]; then \
        go build -a -buildmode=pie -trimpath -ldflags "$LDFLAGS -extldflags '-static-pie' -X main.prefix=" -o discord-tweeter; \
    else \
        go build -a -trimpath -ldflags "$LDFLAGS -extldflags '-static' -X main.prefix=" -o discord-tweeter; \
    fi

FROM scratch

COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/

WORKDIR /app
COPY --from=build /tmp/app/discord-tweeter .
#COPY ./config.example.toml ./config.toml

ENTRYPOINT [ "./discord-tweeter" ]
#CMD [ "./config.toml" ]