## Build
FROM golang:1.26.0-alpine AS build

ARG VERSION='dev'
ARG TAILWIND_VERSION='v3.4.17'
ARG TEMPL_VERSION='v0.3.1001'
ARG SQLC_VERSION='v1.29.0'

RUN apk update && apk add --no-cache curl

RUN curl -fsSLo tailwindcss-linux-x64 https://github.com/tailwindlabs/tailwindcss/releases/download/${TAILWIND_VERSION}/tailwindcss-linux-x64 \
    && chmod +x tailwindcss-linux-x64 \
	&& mv tailwindcss-linux-x64 /usr/local/bin/tailwindcss

RUN go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION} \
	&& go install github.com/sqlc-dev/sqlc/cmd/sqlc@${SQLC_VERSION}

WORKDIR /app

COPY ./ /app

RUN templ generate -path ./components \
	&& tailwindcss -i ./styles/input.css -o ./dist/assets/css/output@${VERSION}.css --minify \
	&& sqlc generate

RUN go build -ldflags="-s -w -X version.Value=${VERSION}" -o my-app

## Deploy
FROM gcr.io/distroless/static-debian12

WORKDIR /

COPY --from=build /app/my-app /my-app

EXPOSE 8080

CMD ["/my-app"]
