1
+ #! /bin/bash
2
+ OS=$( echo ` uname` | tr ' [:upper:]' ' [:lower:]' )
3
+ ARCH=$( uname -m)
4
+ BRANCH_NAME=" v1.7.0"
5
+
6
+ # Proto buf generation
7
+ APPCALLBACK=" appcallback"
8
+ COMMON=" common"
9
+ DAPR=" dapr"
10
+ RUNTIME=" runtime"
11
+ GOOGLE_ANY=" runtime"
12
+
13
+ # Path to store output
14
+ PATH_ROOT=$( pwd)
15
+ # PATH_PROTO="$PATH_ROOT/src/grpc"
16
+ # PATH_PROTO_DAPR="$PATH_PROTO/dapr/proto"
17
+ # SRC="./src/grpc"
18
+
19
+ # Http request CLI
20
+ HTTP_REQUEST_CLI=curl
21
+
22
+ # Make sure curl or wget are installed
23
+ prerequisiteCheckHttpRequestCLI () {
24
+ if type " curl" > /dev/null; then
25
+ HTTP_REQUEST_CLI=curl
26
+ elif type " wget" > /dev/null; then
27
+ HTTP_REQUEST_CLI=wget
28
+ else
29
+ echo " Either curl or wget is required"
30
+ exit 1
31
+ fi
32
+ }
33
+
34
+ prerequisiteCheckProtobuf () {
35
+ if ! type " protoc" > /dev/null; then
36
+ echo " protoc is not installed, trying to install"
37
+ sudo apt update
38
+ sudo apt install -y protobuf-compiler
39
+ protoc --version
40
+
41
+ prerequisiteCheckProtobuf
42
+ else
43
+ echo " protoc ($( protoc --version) ) installed"
44
+ fi
45
+ }
46
+
47
+ downloadFile () {
48
+ SRC=$1
49
+ DST=$2
50
+
51
+ # Ensure target path exists
52
+ mkdir -p $( dirname $DST )
53
+
54
+ # Download the file
55
+ echo " [$HTTP_REQUEST_CLI ] Downloading $1 ..."
56
+ if [ " $HTTP_REQUEST_CLI " == " curl" ]; then
57
+ curl -SsL " $SRC " -o " $DST "
58
+ else
59
+ wget -q -P " $SRC " " $DST "
60
+ fi
61
+ echo " [$HTTP_REQUEST_CLI ] Saved to $DST "
62
+ }
63
+
64
+ generateGrpc () {
65
+ PATH_PROTO=$1
66
+ PATH_FILE=$2
67
+
68
+ echo " [protoc] Generating RPC for $PATH_PROTO /$PATH_FILE "
69
+
70
+ # Tools to be installed by npm (see package.json)
71
+ # npm install grpc-tools --save-dev
72
+ # npm install grpc_tools_node_protoc_ts --save-dev
73
+ PROTOC_GEN_TS_PATH=" ${PATH_ROOT} /node_modules/.bin/protoc-gen-ts"
74
+ PROTOC_GEN_GRPC_PATH=" ${PATH_ROOT} /node_modules/.bin/grpc_tools_node_protoc_plugin"
75
+
76
+ # Note: we specify --proto_path to show where we should start searching from. If we use import it will start from this path
77
+ # this is why PATH_PROTO != PATH_PROTO_DAPR; PATH_PROTO_DAPR is where we save our proto files while the other is the namespace
78
+ protoc \
79
+ --proto_path=" ${PATH_PROTO} " \
80
+ --plugin=" protoc-gen-ts=${PROTOC_GEN_TS_PATH} " \
81
+ --plugin=protoc-gen-grpc=${PROTOC_GEN_GRPC_PATH} \
82
+ --js_out=" import_style=commonjs,binary:$PATH_PROTO " \
83
+ --ts_out=" grpc_js:$PATH_PROTO " \
84
+ --grpc_out=" grpc_js:$PATH_PROTO " \
85
+ " $PATH_PROTO /$PATH_FILE "
86
+ }
87
+
88
+ fail_trap () {
89
+ result=$?
90
+ if [ $result != 0 ]; then
91
+ echo " Failed to generate gRPC interface and proto buf: $ret_val "
92
+ fi
93
+ cleanup
94
+ exit $result
95
+ }
96
+
97
+ cleanup () {
98
+ find $PATH_PROTO -type f -name ' *.proto' -delete
99
+ rm -rf protoc
100
+ rm -f protoc.zip
101
+ }
102
+
103
+ generateGrpcSuccess () {
104
+ echo -e " \ngRPC interface and proto buf generated successfully!"
105
+ }
106
+
107
+ # -----------------------------------------------------------------------------
108
+ # main
109
+ # -----------------------------------------------------------------------------
110
+ # trap "fail_trap" EXIT
111
+
112
+ echo " Checking Dependencies"
113
+ prerequisiteCheckProtobuf
114
+ prerequisiteCheckHttpRequestCLI
115
+
116
+ echo " "
117
+ echo " Removing old Proto Files"
118
+ rm -rf " $PATH_ROOT /src/proto"
119
+ mkdir -p " $PATH_ROOT /src/proto"
120
+
121
+ echo " "
122
+ echo " Downloading latest Dapr gRPC files"
123
+ downloadFile " https://raw.githubusercontent.com/dapr/dapr/$BRANCH_NAME /dapr/proto/common/v1/common.proto" " $PATH_ROOT /src/proto/dapr/proto/common/v1/common.proto"
124
+ downloadFile " https://raw.githubusercontent.com/dapr/dapr/$BRANCH_NAME /dapr/proto/internals/v1/apiversion.proto" " $PATH_ROOT /src/proto/dapr/proto/internals/v1/apiversion.proto"
125
+ downloadFile " https://raw.githubusercontent.com/dapr/dapr/$BRANCH_NAME /dapr/proto/internals/v1/service_invocation.proto" " $PATH_ROOT /src/proto/dapr/proto/internals/v1/service_invocation.proto"
126
+ downloadFile " https://raw.githubusercontent.com/dapr/dapr/$BRANCH_NAME /dapr/proto/internals/v1/status.proto" " $PATH_ROOT /src/proto/dapr/proto/internals/v1/status.proto"
127
+ downloadFile " https://raw.githubusercontent.com/dapr/dapr/$BRANCH_NAME /dapr/proto/operator/v1/operator.proto" " $PATH_ROOT /src/proto/dapr/proto/operator/v1/operator.proto"
128
+ downloadFile " https://raw.githubusercontent.com/dapr/dapr/$BRANCH_NAME /dapr/proto/placement/v1/placement.proto" " $PATH_ROOT /src/proto/dapr/proto/placement/v1/placement.proto"
129
+ downloadFile " https://raw.githubusercontent.com/dapr/dapr/$BRANCH_NAME /dapr/proto/runtime/v1/appcallback.proto" " $PATH_ROOT /src/proto/dapr/proto/runtime/v1/appcallback.proto"
130
+ downloadFile " https://raw.githubusercontent.com/dapr/dapr/$BRANCH_NAME /dapr/proto/runtime/v1/dapr.proto" " $PATH_ROOT /src/proto/dapr/proto/runtime/v1/dapr.proto"
131
+ downloadFile " https://raw.githubusercontent.com/dapr/dapr/$BRANCH_NAME /dapr/proto/sentry/v1/sentry.proto" " $PATH_ROOT /src/proto/dapr/proto/sentry/v1/sentry.proto"
132
+
133
+ echo " "
134
+ echo " Downloading latest Google Protobuf gRPC files"
135
+ downloadFile " https://raw.githubusercontent.com/protocolbuffers/protobuf/master/src/google/protobuf/any.proto" " $PATH_ROOT /src/proto/google/protobuf/any.proto"
136
+ downloadFile " https://raw.githubusercontent.com/protocolbuffers/protobuf/master/src/google/protobuf/empty.proto" " $PATH_ROOT /src/proto/google/protobuf/empty.proto"
137
+
138
+ echo " "
139
+ echo " Compiling gRPC files"
140
+ generateGrpc " $PATH_ROOT /src/proto" " dapr/proto/common/v1/common.proto"
141
+ generateGrpc " $PATH_ROOT /src/proto" " dapr/proto/internals/v1/apiversion.proto"
142
+ generateGrpc " $PATH_ROOT /src/proto" " dapr/proto/internals/v1/service_invocation.proto"
143
+ generateGrpc " $PATH_ROOT /src/proto" " dapr/proto/internals/v1/status.proto"
144
+ generateGrpc " $PATH_ROOT /src/proto" " dapr/proto/operator/v1/operator.proto"
145
+ generateGrpc " $PATH_ROOT /src/proto" " dapr/proto/placement/v1/placement.proto"
146
+ generateGrpc " $PATH_ROOT /src/proto" " dapr/proto/runtime/v1/appcallback.proto"
147
+ generateGrpc " $PATH_ROOT /src/proto" " dapr/proto/runtime/v1/dapr.proto"
148
+ generateGrpc " $PATH_ROOT /src/proto" " dapr/proto/sentry/v1/sentry.proto"
149
+
150
+ generateGrpc " $PATH_ROOT /src/proto" " google/protobuf/any.proto"
151
+ generateGrpc " $PATH_ROOT /src/proto" " google/protobuf/empty.proto"
152
+
153
+
154
+ echo " "
155
+ echo " DONE"
156
+
157
+ # cleanup
158
+
159
+ generateGrpcSuccess
0 commit comments