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/*