FROM node:22-bookworm-slim AS build

WORKDIR /app

COPY package.json ./
COPY packages/plugin-sdk/package.json ./packages/plugin-sdk/
COPY runtime/package.json ./runtime/
COPY plugins/tuya/package.json ./plugins/tuya/
COPY plugins/home-assistant/package.json ./plugins/home-assistant/
COPY plugins/docker/package.json ./plugins/docker/
COPY plugins/local-network/package.json ./plugins/local-network/
COPY plugins/uptime-kuma/package.json ./plugins/uptime-kuma/
COPY plugins/proxmox/package.json ./plugins/proxmox/
COPY plugins/kubernetes/package.json ./plugins/kubernetes/
COPY plugins/desktop-notifier/package.json ./plugins/desktop-notifier/
COPY plugins/webhook-notifier/package.json ./plugins/webhook-notifier/
COPY plugins/email-notifier/package.json ./plugins/email-notifier/

RUN npm install

COPY packages/plugin-sdk ./packages/plugin-sdk
COPY runtime ./runtime
COPY plugins/tuya ./plugins/tuya
COPY plugins/home-assistant ./plugins/home-assistant
COPY plugins/docker ./plugins/docker
COPY plugins/local-network ./plugins/local-network
COPY plugins/uptime-kuma ./plugins/uptime-kuma
COPY plugins/proxmox ./plugins/proxmox
COPY plugins/kubernetes ./plugins/kubernetes
COPY plugins/desktop-notifier ./plugins/desktop-notifier
COPY plugins/webhook-notifier ./plugins/webhook-notifier
COPY plugins/email-notifier ./plugins/email-notifier
COPY docs/schemas ./docs/schemas

RUN npm run build

FROM node:22-bookworm-slim

WORKDIR /app

ENV NODE_ENV=production
ENV MERIDIAN_CONFIG=/etc/meridian/meridiand.yaml

COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/runtime/dist ./runtime/dist
COPY --from=build /app/runtime/package.json ./runtime/package.json
COPY --from=build /app/runtime/meridiand.yaml ./runtime/meridiand.yaml
COPY --from=build /app/packages/plugin-sdk/dist ./packages/plugin-sdk/dist
COPY --from=build /app/packages/plugin-sdk/package.json ./packages/plugin-sdk/package.json
COPY --from=build /app/plugins/tuya ./plugins/tuya
COPY --from=build /app/plugins/home-assistant ./plugins/home-assistant
COPY --from=build /app/plugins/docker ./plugins/docker
COPY --from=build /app/plugins/local-network ./plugins/local-network
COPY --from=build /app/plugins/uptime-kuma ./plugins/uptime-kuma
COPY --from=build /app/plugins/proxmox ./plugins/proxmox
COPY --from=build /app/plugins/kubernetes ./plugins/kubernetes
COPY --from=build /app/plugins/desktop-notifier ./plugins/desktop-notifier
COPY --from=build /app/plugins/webhook-notifier ./plugins/webhook-notifier
COPY --from=build /app/plugins/email-notifier ./plugins/email-notifier

# Prefer: podman build -f runtime/Containerfile -t meridian-runtime .
RUN mkdir -p /var/lib/meridian && \
    sed -i 's|dir: ./data|dir: /var/lib/meridian|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/tuya|/app/plugins/tuya|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/home-assistant|/app/plugins/home-assistant|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/docker|/app/plugins/docker|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/local-network|/app/plugins/local-network|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/uptime-kuma|/app/plugins/uptime-kuma|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/proxmox|/app/plugins/proxmox|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/kubernetes|/app/plugins/kubernetes|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/desktop-notifier|/app/plugins/desktop-notifier|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/webhook-notifier|/app/plugins/webhook-notifier|' runtime/meridiand.yaml && \
    sed -i 's|../plugins/email-notifier|/app/plugins/email-notifier|' runtime/meridiand.yaml

EXPOSE 7420

WORKDIR /app/runtime
CMD ["node", "dist/index.js"]
