# syntax=docker/dockerfile:experimental

ARG NODE_VERSION=22.11.0-bookworm-slim
ARG BASE_IMAGE=node:${NODE_VERSION}
FROM $BASE_IMAGE

USER root
COPY docker-entrypoint.sh /usr/local/bin/
COPY package.json package-lock.json /src/
COPY nodejs-client/package.json nodejs-client/package-lock.json /src/nodejs-client/

RUN set -xe

WORKDIR /src
RUN --mount=type=secret,id=npmrc,dst=/root/.npmrc npm install

# generated nodejs client also needs npmrc for install
WORKDIR /src/nodejs-client
RUN --mount=type=secret,id=npmrc,dst=/root/.npmrc npm install

WORKDIR /src

COPY . /src

RUN chown -R node:node /src

ARG skipAutomation=false
ARG GITHUB_SHA="unknown"
ARG GITHUB_REF="unknown"
ARG GITHUB_REPOSITORY="unknown"
ARG GITHUB_RUN_ID="unknown"

#Insert Build args into LABELS for immutability
LABEL GITHUB_SHA=${GITHUB_SHA}
LABEL GITHUB_REF=${GITHUB_REF}
LABEL GITHUB_REPOSITORY=${GITHUB_REPOSITORY}
LABEL GITHUB_RUN_ID=${GITHUB_RUN_ID}
LABEL skipAutomation=${skipAutomation}

# add git variables to package.json
RUN sed -i "s|%GITHUB_SHA%|${GITHUB_SHA}|g;s|%GITHUB_REF%|${GITHUB_REF}|g;s|%GITHUB_REPOSITORY%|${GITHUB_REPOSITORY}|g;" package.json

#############
# Start App #
#############
USER node
ENTRYPOINT [ "bash", "/usr/local/bin/docker-entrypoint.sh" ]

# --- Begin setup Sealights ---
WORKDIR /src/sealights/

RUN npm init --yes
RUN npm i slnodejs

ARG Sealights_API_Key
RUN echo $Sealights_API_Key > sltoken.txt

RUN NODE_DEBUG=sl ./node_modules/.bin/slnodejs config --tokenfile sltoken.txt --appname "service-dal" --branch "${GITHUB_REF}" --build "${GITHUB_SHA}_`date +%Y-%m-%d_%H:%M:%S`"

WORKDIR /src
# --- Finish setup Sealights ---
