FROM node:20

RUN mkdir /zeppelin
RUN corepack enable
RUN chown node:node /zeppelin

USER node

ARG API_URL

# Install dependencies before copying over any other files
RUN corepack prepare --activate pnpm@latest
COPY --chown=node:node package.json pnpm-lock.yaml pnpm-workspace.yaml /zeppelin/
RUN mkdir /zeppelin/backend
COPY --chown=node:node backend/package.json /zeppelin/backend/
RUN mkdir /zeppelin/shared
COPY --chown=node:node shared/package.json /zeppelin/shared/
RUN mkdir /zeppelin/dashboard
COPY --chown=node:node dashboard/package.json /zeppelin/dashboard/
RUN mkdir /zeppelin/revampdashboard
COPY --chown=node:node revampdashboard/package.json /zeppelin/revampdashboard/

WORKDIR /zeppelin
RUN pnpm i

COPY --chown=node:node . /zeppelin

# Build backend
WORKDIR /zeppelin/backend
RUN pnpm run build

# Build dashboard
WORKDIR /zeppelin/dashboard
RUN pnpm run build

WORKDIR /zeppelin/revampdashboard/
RUN pnpm run check
RUN pnpm run build

# Prune dev dependencies
WORKDIR /zeppelin
RUN pnpm prune --prod