### Build UI ###
FROM oven/bun:1-alpine AS web

# Copy package.json and lockfile from web
WORKDIR /web
COPY ./web/package.json ./web/bun.lock ./

# Install requirements
RUN bun install

# Copy web folder
COPY ./web .

# Build frontend
RUN bun run build

### Build Cup ###
FROM rust:1-alpine AS build

# Requirements
RUN apk add musl-dev

# Copy files
WORKDIR /cup

COPY Cargo.toml .
COPY Cargo.lock .
COPY ./src ./src

# Copy UI from web builder
COPY --from=web /web/dist src/static

# Build
RUN cargo build --release

### Main ###
FROM scratch

# Copy binary
COPY --from=build /cup/target/release/cup /cup

EXPOSE 8000
ENTRYPOINT ["/cup"]
