FROM golang:1.19-bullseye

RUN mkdir /build
WORKDIR /build

RUN apt-get update && apt-get -y install --no-install-recommends protobuf-compiler libprotobuf-dev

ENV PATH=${PATH}:${GOBIN}

ENV GEN_VALIDATE=github.com/envoyproxy/protoc-gen-validate@v1.0.2
ENV GOOGLEAPIS=github.com/google/googleapis@v0.0.0-20200324113624-36c0febd0fa7
ENV GRPC_GATEWAY=github.com/grpc-ecosystem/grpc-gateway@v1.16.0

RUN go install ${GEN_VALIDATE}

RUN go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.16.0 && \
    go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@v1.16.0  && \
    go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

RUN go install go.unistack.org/protoc-gen-go-micro/v3@latest

RUN go mod init proto
RUN go get ${GOOGLEAPIS} && \
    go get ${GRPC_GATEWAY} && \
	go get google.golang.org/grpc@v1.57.0 && \
	go get -u github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway && \
	go get -u github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 && \
	go get google.golang.org/protobuf/cmd/protoc-gen-go && \
    go get go.unistack.org/micro-proto/v3@v3.3.1

CMD rm -rf go_generate && \
    protoc \
        --validate_out=lang=go:. \
        --go-micro_out=debug=true,components="micro|http":. \
        --go_out=. \
        --grpc-gateway_out=. \
        --proto_path=/go/pkg/mod/go.unistack.org/micro-proto/v3@v3.3.1 \
	    -I=./ \
	    -I=/usr/include \
	    -I=/go/pkg/mod/${GEN_VALIDATE} \
	    -I=/go/pkg/mod/${GOOGLEAPIS} \
	    -I=/go/pkg/mod/${GRPC_GATEWAY} \
	    ./*.proto