# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

ARG FROM_IMAGE
FROM ${FROM_IMAGE:-cobalt-build-base}

ARG USER
ARG UID
ARG GID

RUN apt update -qqy \
    && apt install -qqy --no-install-recommends \
        build-essential \
        bundler \
        doxygen \
        git \
        python-pygments \
        ruby2.5-dev \
        ruby-execjs \
    && apt-get clean autoclean \
    && apt-get autoremove -y --purge \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    && rm -rf /var/lib/{apt,dpkg,cache,log}

# We create and use a non-root user explicitly so that the generated and
# modified files maintain the same permissions as the user that launched the
# Docker container.
RUN addgroup --group --gid "${GID}" defaultgroup \
    && adduser --disabled-password --gecos '' --uid "${UID}" --gid "${GID}" defaultuser

# The new user must be able to execute gn.
RUN chmod a+x /usr/local/bin/gn

# Create an out directory with a descriptive name for gn.
RUN mkdir /project_out_dir \
    && chown ${USER:-defaultuser}:defaultgroup /project_out_dir

RUN git config --global --add safe.directory /code

COPY Gemfile /app/Gemfile
# Note: This file was generated by running a working version of this Docker
# container. Then it was committed back to the codebase to be copied over as
# part of the build steps.
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install --gemfile=/app/Gemfile

USER ${USER:-defaultuser}

CMD /code/third_party/internal/repo-publishing-toolkit-local/preview-site.sh run
