FROM amd64/ubuntu:20.04

RUN apt-get update; apt-get clean

# Add a user for running applications.
RUN useradd apps
RUN mkdir -p /home/apps && chown apps:apps /home/apps

RUN apt-get install -y wget gnupg2 python3-pip locales zip unzip

WORKDIR /spotify-statistics
COPY . /spotify-statistics

RUN ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime

RUN localedef -c -f UTF-8 -i en_US en_US.UTF-8
ENV LC_ALL=en_US.UTF-8
ENV LANG=en_US.UTF-8
ENV LANGUAGE=en_US.UTF-8

ARG CHROME_VERSION="google-chrome-stable"
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
  && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \
  && apt-get update -qqy \
  && apt-get -qqy install \
    ${CHROME_VERSION:-google-chrome-stable} \
  && rm /etc/apt/sources.list.d/google-chrome.list \
  && rm -rf /var/lib/apt/lists/* /var/cache/apt/*

ARG CHROME_DRIVER_VERSION
RUN if [ -z "$CHROME_DRIVER_VERSION" ]; \
  then CHROME_MAJOR_VERSION=$(google-chrome --version | sed -E "s/.* ([0-9]+)(\.[0-9]+){3}.*/\1/") \
    && CHROME_DRIVER_VERSION=$(wget --no-verbose -O - "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR_VERSION}"); \
  fi \
  && echo "Using chromedriver version: "$CHROME_DRIVER_VERSION \
  && wget --no-verbose -O /spotify-statistics/chromedriver_linux64.zip https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip \
  && rm -rf /opt/selenium/chromedriver \
  && unzip -o /spotify-statistics/chromedriver_linux64.zip -d /spotify-statistics \
  && rm /spotify-statistics/chromedriver_linux64.zip \
  && chmod 777 /spotify-statistics/chromedriver \
  && ln -fs /spotify-statistics/chromedriver /usr/bin/chromedriver

RUN python3 -m pip install pipenv==2020.11.15
RUN python3 -m pip install sentry-sdk pluggy iniconfig vcrpy

# ENV PYTHONPATH ${PYTHONPATH}:/spotify-statistics
ARG SNOWFLAKE_ROLE
ARG SNOWFLAKE_WAREHOUSE
ARG SNOWFLAKE_PASSWORD
ARG SNOWFLAKE_USER
ARG SNOWFLAKE_ACCOUNT
ARG SNOWFLAKE_DATABASE
ARG SNOWFLAKE_SCHEMA
ARG SPOTIFY_CLIENT_ID
ARG SPOTIFY_CLIENT_SECRET
ARG Environment
ARG SENTRY_DSN
ARG SNOWFLAKE_DATABASE_POSTFIX

ENV SNOWFLAKE_ROLE=$SMOWFLAKE_ROLE
ENV SNOWFLAKE_WAREHOUSE=$SNOWFLAKE_WAREHOUSE
ENV SNOWFLAKE_PASSWORD=$SNOWFLAKE_PASSWORD
ENV SNOWFLAKE_USER=$SNOWFLAKE_USER
ENV SNOWFLAKE_ACCOUNT=$SNOWFLAKE_ACCOUNT
ENV SNOWFLAKE_DATABASE=$SNOWFLAKE_DATABASE
ENV SNOWFLAKE_SCHEMA=$SNOWFLAKE_SCHEMA
ENV SPOTIFY_CLIENT_ID=$SPOTIFY_CLIENT_ID
ENV SPOTIFY_CLIENT_SECRET=$SPOTIFY_CLIENT_SECRET
ENV Environment=$Environment
ENV SENTRY_DSN=$SENTRY_DSN
ENV SNOWFLAKE_DATABASE_POSTFIX=$SNOWFLAKE_DATABASE_POSTFIX

# RUN echo $(ls -1 /spotify-statistics) && sleep 90

RUN if [ -f /spotify-statistics/Pipfile.lock ]; then pipenv sync --system; fi
RUN make lint test_unit
RUN python3 /spotify-statistics/spotify_with_spotipy.py
