# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

ARG REGISTRY_URI=gcr.io/chromeos-partner-moblab
ARG BASE_REGISTRY_URI=us-docker.pkg.dev/chromeos-partner-moblab/base-containers
ARG LABEL=release

FROM ${REGISTRY_URI}/protoc:${LABEL} as protoc

FROM ${BASE_REGISTRY_URI}/bufbuild/buf as buf

FROM ${BASE_REGISTRY_URI}/hadolint/hadolint:latest-debian as hadolint

######################################################################

FROM ${BASE_REGISTRY_URI}/node:16-buster as base

RUN npm install -g gts eslint @angular/cli
ENV NODE_PATH=/usr/local/lib/node_modules/gts/node_modules:/usr/local/lib/node_modules

RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] \
    https://packages.cloud.google.com/apt cloud-sdk main" | \
    tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg |\
    apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
RUN apt-get -yq update && apt-get install --no-install-recommends -yq \
    apt-transport-https \
    ca-certificates \
    curl \
    git-core \
    gnupg \
    gnupg-agent \
    google-cloud-sdk \
    python3 \
    python3-pip \
    python3-setuptools \
    software-properties-common \
    sudo \
    vim

RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1

# Install docker
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
RUN add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/debian \
    $(lsb_release -cs) \
    stable"
RUN apt-get -yq update && apt-get install -yq docker-ce-cli

# Install chrome
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub |\
    apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ \
    stable main" >> /etc/apt/sources.list.d/google.list'
RUN apt-get -yq update && apt-get install -yq google-chrome-stable

COPY requirements.txt ./
RUN python3 -m pip install -U pip && python3 -m pip install --no-cache-dir -r \
    requirements.txt

# Install vscode
RUN wget -O code.deb https://go.microsoft.com/fwlink/?LinkID=760868
RUN apt-get -yq update && apt install -yq ./code.deb
RUN rm code.deb

# Install meld
RUN apt-get -yq update && apt install -yq meld

# Install protoc
COPY --from=protoc /protoc/* /usr/local/bin/

# Install protobuf linter https://buf.build/
COPY --from=buf /usr/local/bin/buf /usr/local/bin

# Install Dockerfile linter https://github.com/hadolint/hadolint
COPY --from=buf /usr/local/bin/buf /usr/local/bin

# Dockerfile linter/formatter
COPY --from=hadolint /bin/hadolint /usr/local/bin

COPY get_source.sh /usr/local/bin
COPY entry.sh /usr/local/bin
RUN chmod uog+rx /usr/local/bin/get_source.sh
RUN chmod uog+rx /usr/local/bin/entry.sh
