agones.dev/agones@v1.53.0/build/build-sdk-images/go/gen.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  # Copyright 2019 Google LLC All Rights Reserved.
     4  #
     5  # Licensed under the Apache License, Version 2.0 (the "License");
     6  # you may not use this file except in compliance with the License.
     7  # You may obtain a copy of the License at
     8  #
     9  #     http://www.apache.org/licenses/LICENSE-2.0
    10  #
    11  # Unless required by applicable law or agreed to in writing, software
    12  # distributed under the License is distributed on an "AS IS" BASIS,
    13  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  # See the License for the specific language governing permissions and
    15  # limitations under the License.
    16  
    17  set -ex
    18  
    19  header() {
    20      cat /go/src/agones.dev/agones/build/boilerplate.go.txt "$1" | sponge "$1"
    21  }
    22  
    23  sdk=/go/src/agones.dev/agones/proto/sdk
    24  googleapis=/go/src/agones.dev/agones/proto/googleapis
    25  gatewaygrpc=/go/src/agones.dev/agones/proto/grpc-gateway
    26  
    27  export GO111MODULE=on
    28  
    29  mkdir -p /go/src/
    30  cp -r /go/src/agones.dev/agones/vendor/* /go/src/
    31  
    32  cd /go/src/agones.dev/agones
    33  go install -mod=vendor github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway
    34  go install -mod=vendor github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2
    35  
    36  mkdir -p ./pkg/sdk/{alpha,beta} || true
    37  
    38  rm ./pkg/sdk/beta/beta.pb.go || true
    39  rm ./pkg/sdk/alpha/alpha.pb.go || true
    40  rm ./pkg/sdk/beta/beta_grpc.pb.go || true
    41  rm ./pkg/sdk/alpha/alpha_grpc.pb.go || true
    42  rm ./pkg/sdk/beta/beta.pb.gw.go || true
    43  rm ./pkg/sdk/alpha/alpha.pb.gw.go || true
    44  
    45  # generate the go code for each feature stage
    46  protoc -I ${googleapis} -I ${gatewaygrpc} -I ${sdk} sdk.proto --go_out=pkg --go-grpc_opt=require_unimplemented_servers=false --go-grpc_out=pkg
    47  protoc -I ${googleapis} -I ${gatewaygrpc} -I ${sdk}/alpha alpha.proto --go_out=pkg/sdk --go-grpc_opt=require_unimplemented_servers=false --go-grpc_out=pkg/sdk
    48  protoc -I ${googleapis} -I ${gatewaygrpc} -I ${sdk}/beta beta.proto --go_out=pkg/sdk --go-grpc_opt=require_unimplemented_servers=false --go-grpc_out=pkg/sdk
    49  
    50  # generate grpc gateway
    51  protoc -I ${googleapis} -I ${gatewaygrpc} -I ${sdk} sdk.proto --grpc-gateway_out=logtostderr=true:pkg
    52  protoc -I ${googleapis} -I ${gatewaygrpc} -I ${sdk}/alpha alpha.proto --grpc-gateway_out=logtostderr=true:pkg/sdk
    53  protoc -I ${googleapis} -I ${gatewaygrpc} -I ${sdk}/beta beta.proto --grpc-gateway_out=logtostderr=true:pkg/sdk
    54  
    55  # generate openapi v2
    56  protoc -I ${googleapis} -I ${gatewaygrpc} -I ${sdk} sdk.proto --openapiv2_opt=logtostderr=true,simple_operation_ids=true,disable_default_errors=true --openapiv2_out=json_names_for_fields=false,logtostderr=true:sdks/swagger
    57  protoc -I ${googleapis} -I ${gatewaygrpc} -I ${sdk}/alpha alpha.proto --openapiv2_opt=logtostderr=true,simple_operation_ids=true,disable_default_errors=true --openapiv2_out=json_names_for_fields=false,logtostderr=true:sdks/swagger
    58  protoc -I ${googleapis} -I ${gatewaygrpc} -I ${sdk}/beta beta.proto --openapiv2_opt=logtostderr=true,simple_operation_ids=true,disable_default_errors=true --openapiv2_out=json_names_for_fields=false,logtostderr=true:sdks/swagger
    59  
    60  # hard coding because protoc-gen-openapiv2 doesn't work well in Stream and doesn't generate 'googlerpcStatus' and 'protobufAny' definitions
    61  cat sdks/swagger/sdk.swagger.json | jq '.definitions |= .+{"googlerpcStatus": {"type": "object", "properties": { "code": { "type": "integer", "format": "int32"}, "message": { "type":"string"}, "details": { "type": "array", "items": { "$ref": "#/definitions/protobufAny"}}}}}' | sponge sdks/swagger/sdk.swagger.json
    62  cat sdks/swagger/sdk.swagger.json | jq '.definitions |= .+{"protobufAny": { "type": "object", "properties": { "@type": { "type": "string" }}, "additionalProperties": {}},}' | sponge sdks/swagger/sdk.swagger.json
    63  
    64  header ./pkg/sdk/sdk.pb.go
    65  header ./pkg/sdk/alpha/alpha.pb.go
    66  header ./pkg/sdk/beta/beta.pb.go
    67  header ./pkg/sdk/sdk.pb.gw.go
    68  header ./pkg/sdk/sdk_grpc.pb.go
    69  header ./pkg/sdk/alpha/alpha_grpc.pb.go
    70  header ./pkg/sdk/beta/beta_grpc.pb.go
    71  
    72  # these files may not exist if there are no grpc services
    73  if [ -f "./pkg/sdk/alpha/alpha.pb.gw.go" ]; then
    74      header ./pkg/sdk/alpha/alpha.pb.gw.go
    75  fi
    76  if [ -f "./pkg/sdk/beta/beta.pb.gw.go" ]; then
    77      header ./pkg/sdk/beta/beta.pb.gw.go
    78  fi
    79  
    80  goimports -w ./pkg/sdk/*
    81  goimports -w ./pkg/sdk/alpha/*
    82  goimports -w ./pkg/sdk/beta/*