FROM debian:bullseye
ARG DEBIAN_FRONTEND=noninteractive
ARG VERSION="9.0.RC6"

COPY openspecimen /tmp/openspecimen
RUN apt-get update \
    && apt-get install -y software-properties-common apt-utils wget gnupg \
    apt-transport-https ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# Setup JDK
RUN apt-get update \
    && apt install -y openjdk-17-jdk

# wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add - \
    #&& add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ \
    
# Setup tomcat and dependencies
RUN apt-get install -y build-essential libpng-dev \
    && mkdir /opt/tomcat/ \
    && useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat \
    && wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz -P /tmp/ \
    && tar xf /tmp/apache-tomcat-9*.tar.gz -C /opt/tomcat \
    && ln -s /opt/tomcat/apache-tomcat-9.0.27 /opt/tomcat/latest \
    && sh -c 'chmod +x /opt/tomcat/latest/bin/*.sh' \
    && chown -R tomcat:tomcat /opt/tomcat/apache-tomcat-9.0.27

ENV GRADLE_HOME="/opt/gradle/gradle-7.5.1"
ENV PATH="${GRADLE_HOME}/bin:${PATH}"

# Setup build tools
RUN wget https://services.gradle.org/distributions/gradle-7.5.1-bin.zip -P /tmp \
    && apt-get install -y unzip curl git \
    && echo | ls /tmp \
    && unzip -d /opt/gradle /tmp/gradle-7.5.1-bin.zip \
    #&& curl -sL https://deb.nodesource.com/setup_16.x | bash - \
    && apt-get install -f \
    && apt-get install -y npm 
    # && apt-get install -y --force-yes nodejs \
   
    

RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash \
    && cd /tmp/openspecimen/www/ \
    && . ~/.nvm/nvm.sh \
    && nvm install 12.22 \
    && nvm install 14.20
    
WORKDIR /tmp/openspecimen/www/

RUN . ~/.nvm/nvm.sh \
    && nvm use 14.20 \
    && npm install --loglevel=error \
    && npm install --loglevel=error -g bower@1.8.14 grunt@1.2.1 \
    && npm audit fix \
    && echo "im here stupid BOI" \
    && bower info bootstrap-timepicker \
    && bower info angular-strap \
    && bower info angular-ui-select \
    && bower info angular-ui-sortable \
    && bower install --allow-root --verbose\
    && apt remove -y unzip curl \
    && rm -rf /var/lib/apt/lists/*

# Copy config files
ADD docker/build.properties /tmp/openspecimen/
ADD docker/context.xml /opt/tomcat/latest/conf/
ADD docker/openspecimen.properties /opt/tomcat/latest/conf/

# Build WAR file
RUN . ~/.nvm/nvm.sh \
    && nvm use 14.20 \
    && npm install --loglevel=error \
    && npm install --loglevel=error -g bower@1.8.14 grunt@1.2.1 \
    && npm audit fix \
    && cd /tmp/openspecimen \
    && echo | ls /opt/gradle \
    && gradle build --stacktrace \
    && cp build/libs/openspecimen.war /opt/tomcat/latest/webapps/ \
    && chown -R tomcat:tomcat /opt/tomcat/latest/webapps/openspecimen.war \
    && mkdir -p /opt/tomcat/latest/OpenSpecimen/plugins \
    && chown -R tomcat:tomcat /opt/tomcat/latest/OpenSpecimen/ \
    && chown tomcat:tomcat /opt/tomcat/latest/conf/openspecimen.properties \
    && chown tomcat:tomcat /opt/tomcat/latest/conf/context.xml \
    && wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar -P /opt/tomcat/latest/lib/ \
    && chown tomcat:tomcat /opt/tomcat/latest/lib/mysql-connector-java-8.0.18.jar \
    && cd /
ADD wait.sh /home/wait.sh
ADD wait2.sh /home/wait2.sh

RUN echo 'export PS1="[\u@openspecimen:\w]# "' >> /root/.bashrc
RUN touch /something
ENTRYPOINT ["bash"]
