FROM node:24-bookworm-slim AS builder

WORKDIR /src

RUN corepack enable

COPY packages/sdk-ts/package.json packages/sdk-ts/yarn.lock ./packages/sdk-ts/
COPY packages/sdk-ts/orval.config.ts packages/sdk-ts/tsconfig.json ./packages/sdk-ts/
COPY packages/sdk-ts/src ./packages/sdk-ts/src
COPY packages/contracts ./packages/contracts
RUN yarn --cwd packages/sdk-ts install --frozen-lockfile
RUN yarn --cwd packages/sdk-ts generate

COPY apps/web/ticket-manager/package.json apps/web/ticket-manager/yarn.lock ./apps/web/ticket-manager/
RUN yarn --cwd apps/web/ticket-manager install --frozen-lockfile

COPY apps/web/ticket-manager/index.html apps/web/ticket-manager/components.json apps/web/ticket-manager/tsconfig.json apps/web/ticket-manager/tsconfig.node.json apps/web/ticket-manager/vite.config.ts ./apps/web/ticket-manager/
COPY apps/web/ticket-manager/src ./apps/web/ticket-manager/src
COPY apps/web/ticket-manager/public ./apps/web/ticket-manager/public

ARG VITE_TICKET_MANAGER_API_BASE
ARG VITE_JIRA_DOMAIN
ARG VITE_OPS_PORTAL_DOMAIN
ARG VITE_AUTH0_DOMAIN=""
ARG VITE_AUTH0_CLIENT_ID=""
ARG VITE_AUTH0_AUDIENCE=""
ENV VITE_TICKET_MANAGER_API_BASE=${VITE_TICKET_MANAGER_API_BASE}
ENV VITE_JIRA_DOMAIN=${VITE_JIRA_DOMAIN}
ENV VITE_OPS_PORTAL_DOMAIN=${VITE_OPS_PORTAL_DOMAIN}
ENV VITE_AUTH0_DOMAIN=${VITE_AUTH0_DOMAIN}
ENV VITE_AUTH0_CLIENT_ID=${VITE_AUTH0_CLIENT_ID}
ENV VITE_AUTH0_AUDIENCE=${VITE_AUTH0_AUDIENCE}

RUN yarn --cwd apps/web/ticket-manager build

FROM nginxinc/nginx-unprivileged:1.29-alpine

COPY infra/images/ticket-manager-web/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /src/apps/web/ticket-manager/dist /usr/share/nginx/html

EXPOSE 8080
