# Builder
FROM openshift/origin-release:golang-1.16 as builder
USER root
ENV PKG_ROOT=cnf-features-deploy
ENV PKG_PATH=/go/src/$PKG_ROOT
ENV PGT_ROOT=$PKG_PATH/ztp/policygenerator
ENV SC_ROOT=$PKG_PATH/ztp/siteconfig-generator
RUN mkdir -p $PKG_PATH
WORKDIR $PKG_PATH/
ARG TAR_NAME
COPY --chown=1001 $TAR_NAME  $PKG_PATH/
RUN (tar -xf $TAR_NAME) && rm $TAR_NAME
WORKDIR $PKG_PATH/$PKG_ROOT
RUN go mod tidy && go mod vendor
WORKDIR $PGT_ROOT
RUN go build -mod=vendor -o /PolicyGenTemplate
WORKDIR $SC_ROOT
RUN go build -mod=vendor -o /SiteConfig

# Container image
FROM ubi8-minimal
ARG IMAGE_REF
USER root
ENV WD=/home/ztp
ENV TEMP=/tmp/ztp-temp
ENV PGT_WD=/kustomize/plugin/ran.openshift.io/v1/policygentemplate
ENV SITECONFIG_WD=/kustomize/plugin/ran.openshift.io/v1/siteconfig
RUN microdnf install tar
RUN mkdir -p $WD
RUN mkdir -p $TEMP
RUN mkdir -p $PGT_WD
RUN mkdir -p $SITECONFIG_WD
RUN mkdir -p $PGT_WD/source-crs
WORKDIR $WD

ARG TAR_NAME
ADD --chown=1001 $TAR_NAME $TEMP
WORKDIR $TEMP/ztp/resource-generator
RUN ./tools/patchImageReference.sh ../gitops-subscriptions $IMAGE_REF
RUN chown -R 1001:1001 $WD && \
    cp -R -L $TEMP/ztp/source-crs/extra-manifest $SITECONFIG_WD && \
    cp -R -L $TEMP/ztp/source-crs/*.yaml $PGT_WD/source-crs && \
    cp -r $TEMP/ztp/source-crs/validatorCRs $PGT_WD/source-crs && \
    cp -r $TEMP/ztp/gitops-subscriptions/argocd $WD && \
    cp -r $SITECONFIG_WD/extra-manifest $WD  && \
    cp -r $PGT_WD/source-crs $WD

COPY --from=builder  /PolicyGenTemplate $PGT_WD
COPY --from=builder  /SiteConfig $SITECONFIG_WD
COPY --chown=1001 exportkustomize.sh /
COPY entrypoints/* /usr/bin
USER 1001
CMD entrypoints
