FROM python:3.8

RUN apt-get update \
  && apt-get install -y locales \
  && rm -rf /var/lib/apt/lists/*

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

RUN useradd -ms /bin/bash appuser

WORKDIR /youtube-statistics
COPY --chown=appuser:appuser . /youtube-statistics

USER appuser
ENV PATH="/home/appuser/.local/bin:${PATH}"

RUN pip install --upgrade pip \
  && python -m pip install pipenv==2020.11.15 matplotlib sentry-sdk pluggy iniconfig vcrpy

RUN if [ -f /youtube-statistics/Pipfile.lock ]; then pipenv sync --system; fi

ARG SNOWFLAKE_ROLE
ARG SNOWFLAKE_WAREHOUSE
ARG SNOWFLAKE_PASSWORD
ARG SNOWFLAKE_USER
ARG SNOWFLAKE_ACCOUNT
ARG SNOWFLAKE_DATABASE
ARG SNOWFLAKE_SCHEMA
ARG SENTRY_DSN
ARG Environment
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 SENTRY_DSN=$SENTRY_DSN
ENV Environment=$Environment
ENV SNOWFLAKE_DATABASE_POSTFIX=$SNOWFLAKE_DATABASE_POSTFIX

RUN make lint test_unit
RUN python /youtube-statistics/youtube_with_pyyoutube.py
