VERSION 0.6

ARG GO_VERSION=1.20
ARG GOLINT_VERSION=1.47.3

go-deps:
    ARG GO_VERSION
    FROM golang:$GO_VERSION
    WORKDIR /build
    COPY go.mod ./
    COPY go.sum ./
    RUN go mod download
    RUN apt-get update
    SAVE ARTIFACT go.mod AS LOCAL go.mod
    SAVE ARTIFACT go.sum AS LOCAL go.sum

alpaca-model:
    FROM alpine
    # This is the alpaca.cpp model https://github.com/antimatter15/alpaca.cpp
    ARG MODEL_URL=https://ipfs.io/ipfs/QmQ1bf2BTnYxq73MFJWu1B7bQ2UD6qG7D7YDCxhTndVkPC
    RUN wget -O model.bin -c https://ipfs.io/ipfs/QmQ1bf2BTnYxq73MFJWu1B7bQ2UD6qG7D7YDCxhTndVkPC
    SAVE ARTIFACT model.bin AS LOCAL model.bin 

build:
    FROM +go-deps
    WORKDIR /build
    RUN git clone https://github.com/go-skynet/llama
    RUN cd llama && make libllama.a
    COPY . .
    RUN C_INCLUDE_PATH=/build/llama LIBRARY_PATH=/build/llama go build -o llama-cli ./
    SAVE ARTIFACT llama-cli AS LOCAL llama-cli

image:
    FROM +go-deps
    ARG IMAGE=alpaca-cli
    COPY +alpaca-model/model.bin /model.bin
    COPY +build/llama-cli /llama-cli
    ENV MODEL_PATH=/model.bin
    ENTRYPOINT /llama-cli
    SAVE IMAGE --push $IMAGE

image-all:
    BUILD --platform=linux/amd64 --platform=linux/arm64 +image