VERSION 0.8

deps:
    FROM alpine:3.18
    
    ARG ZIG_VERSION=0.12.0

    ARG TARGETARCH
    IF [ "$TARGETARCH" = "amd64" ]
        ARG ZIG_ARCH="x86_64"
    ELSE IF [ "$TARGETARCH" = "arm64" ]
        ARG ZIG_ARCH="aarch64"
    END
    RUN echo "Installing Zig $ZIG_VERSION for $ZIG_ARCH with https://ziglang.org/download/$ZIG_VERSION/zig-linux-$ZIG_ARCH-$ZIG_VERSION.tar.xz"
    RUN wget -O zig.tar.xz https://ziglang.org/download/$ZIG_VERSION/zig-linux-$ZIG_ARCH-$ZIG_VERSION.tar.xz && \
        mkdir zig && \
        tar -xvf zig.tar.xz --strip-components 1 -C zig && \
        ln -sf /zig/zig /usr/bin/zig

src:
    FROM +deps
    WORKDIR app
    COPY build.zig .
    COPY src ./src

build:
    FROM +src
    RUN zig build
    SAVE ARTIFACT zig-out/bin/fizzbuzz AS LOCAL fizzbuzz

test:
    FROM +src
    RUN zig test src/main.zig

docker:
    FROM alpine:3.18
    WORKDIR /app
    COPY +build/fizzbuzz .

    ENTRYPOINT ["/app/fizzbuzz"]
    CMD ["10"]
    SAVE IMAGE --push earthly/examples:zig
