# syntax=docker/dockerfile:1

# build stage - compile snitch
FROM golang:1.25.0-bookworm AS builder
WORKDIR /src
COPY . .
RUN --mount=type=cache,target=/go/pkg/mod \
    --mount=type=cache,target=/root/.cache/go-build \
    go build -o snitch .

# runtime stage - official vhs image has ffmpeg, chromium, ttyd pre-installed
FROM ghcr.io/charmbracelet/vhs

# install only lightweight tools for fake services
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
    --mount=type=cache,target=/var/lib/apt,sharing=locked \
    apt-get update --allow-releaseinfo-change && apt-get install -y --no-install-recommends \
    netcat-openbsd \
    procps \
    socat \
    nginx-light

WORKDIR /app

# copy built binary from builder
COPY --from=builder /src/snitch /app/snitch

# copy demo files
COPY demo/demo.tape /app/demo.tape
COPY demo/entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh

ENV TERM=xterm-256color
ENV COLORTERM=truecolor

ENTRYPOINT ["/app/entrypoint.sh"]
