Imported Upstream version 1.34.0
[platform/upstream/grpc.git] / src / csharp / generate_proto_csharp.sh
1 #!/bin/sh
2 # Copyright 2015 gRPC authors.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #     http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 # Regenerates gRPC service stubs from proto files.
17 set -e
18 cd $(dirname $0)/../..
19
20 # protoc and grpc_*_plugin binaries can be obtained by running
21 # $ bazel build @com_google_protobuf//:protoc //src/compiler:all
22 PROTOC=bazel-bin/external/com_google_protobuf/protoc
23 PLUGIN=protoc-gen-grpc=bazel-bin/src/compiler/grpc_csharp_plugin
24
25 EXAMPLES_DIR=src/csharp/Grpc.Examples
26 HEALTHCHECK_DIR=src/csharp/Grpc.HealthCheck
27 REFLECTION_DIR=src/csharp/Grpc.Reflection
28 TESTING_DIR=src/csharp/Grpc.IntegrationTesting
29
30 $PROTOC --plugin=$PLUGIN --csharp_out=$EXAMPLES_DIR --grpc_out=$EXAMPLES_DIR \
31     -I src/proto src/proto/math/math.proto
32
33 $PROTOC --plugin=$PLUGIN --csharp_out=$HEALTHCHECK_DIR --grpc_out=$HEALTHCHECK_DIR \
34     -I src/proto src/proto/grpc/health/v1/health.proto
35     
36 $PROTOC --plugin=$PLUGIN --csharp_out=$REFLECTION_DIR --grpc_out=$REFLECTION_DIR \
37     -I src/proto src/proto/grpc/reflection/v1alpha/reflection.proto
38
39 # Put grpc/core/stats.proto in a subdirectory to avoid collision with grpc/testing/stats.proto
40 mkdir -p $TESTING_DIR/CoreStats
41 $PROTOC --plugin=$PLUGIN --csharp_out=$TESTING_DIR/CoreStats --grpc_out=$TESTING_DIR/CoreStats \
42     -I src/proto src/proto/grpc/core/stats.proto
43
44 # TODO(jtattermusch): following .proto files are a bit broken and import paths
45 # don't match the package names. Setting -I to the correct value src/proto
46 # breaks the code generation.
47 $PROTOC --plugin=$PLUGIN --csharp_out=$TESTING_DIR --grpc_out=$TESTING_DIR \
48     -I . src/proto/grpc/testing/{control,echo_messages,empty,empty_service,messages,metrics,payloads,benchmark_service,report_qps_scenario_service,worker_service,stats,test}.proto