# Copyright 2018 the original author or authors.
#
# 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 REGISTRY=
ARG REPOSITORY=
ARG TAG=latest

FROM ${REGISTRY}${REPOSITORY}voltha-protoc:${TAG} as builder
MAINTAINER Voltha Community <info@opennetworking.org>

COPY protos/third_party/google/api/*.proto /protos/google/api/
COPY docker/config/Makefile.protos /protos/google/api/Makefile.protos
COPY protos/*.proto /protos/voltha/
COPY docker/config/Makefile.protos /protos/voltha/Makefile.protos

WORKDIR /protos
RUN make -f google/api/Makefile.protos google_api
RUN touch /protos/google/__init__.py /protos/google/api/__init__.py

WORKDIR /protos/voltha
RUN make -f Makefile.protos build

# Copy the files to a scrach based container to minimize its size
FROM ${REGISTRY}scratch
COPY --from=builder /protos/ /protos/
