| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- #!/bin/bash
- set -e
- export PROTOBUF_ROOT=$HOME/.local
- export WORKSPACE=$PWD
- # -----------------------------------------------------------------------------
- function generate_grpc_by_lang() {
- local target=$WORKSPACE/sdk/$1
- echo "generate code for grpc-$1"
-
- if [ -d $target ]
- then
- rm -r $target
- fi
- mkdir -p $target
- $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
- -I $PROTOBUF_ROOT/include/google/protobuf \
- --${1}_out=$target --grpc_out=$target \
- --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_${1}_plugin \
- $WORKSPACE/protocols/*.proto
- }
- function generate_flatbuffers(){
- echo "generate flatbuffers"
- flatc --rust -o $WORKSPACE/src/$2.rs $WORKSPACE/protocols/$1.fbs
- }
- # https://github.com/grpc/grpc-web#code-generator-plugin
- function generate_grpc_web() {
- echo "generate code for grpc-web"
- local target=$1/src/protocols
- if [ -d $target ]
- then
- rm -r $target
- fi
- mkdir -p $target
- $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
- -I $PROTOBUF_ROOT/include/google/protobuf \
- --js_out=import_style=commonjs,binary:$target \
- --grpc-web_out=import_style=typescript,mode=grpcweb:$target \
- $WORKSPACE/protocols/*.proto
- }
- function generate_for_morus() {
- echo "generate code for morus project"
- local target=$WORKSPACE/morus/morus
- local -a folders=(
- "GPBMetadata"
- "Mint"
- )
- for f in "${folders[@]}"
- do
- local t=$target/$f
- if [ -d $t ]
- then
- rm -r $t
- fi
- done
- $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
- -I $PROTOBUF_ROOT/include/google/protobuf \
- --php_out=$target --grpc_out=generate_server:$target \
- --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_php_plugin \
- $WORKSPACE/protocols/morus.proto
- }
- function generate_for_lily() {
- echo "generate code for lily project"
- local target=$WORKSPACE/lily/lily/palm
- local -a files=(
- "lily_pb2.py"
- "lily_pb2_grpc.py"
- )
- for f in "${files[@]}"
- do
- local t=$target/$f
- if [ -f $t ]
- then
- rm $t
- fi
- done
- $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
- -I $PROTOBUF_ROOT/include/google/protobuf \
- --python_out=$target --grpc_out=$target \
- --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_python_plugin \
- $WORKSPACE/protocols/lily.proto
- sed -i 's/import lily_/from . import lily_/g' $target/lily_pb2_grpc.py
- }
- function generate_for_tulip() {
- echo "generate code for tulip project"
- local target=$WORKSPACE/tulip/tulip
- local -a folders=(
- "GPBMetadata"
- "Mint"
- )
- for f in "${folders[@]}"
- do
- local t=$target/$f
- if [ -d $t ]
- then
- rm -r $t
- fi
- done
- $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
- -I $PROTOBUF_ROOT/include/google/protobuf \
- --php_out=$target --grpc_out=generate_server:$target \
- --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_php_plugin \
- $WORKSPACE/protocols/tulip.proto
- }
- function generate_grpc_for_php() {
- if [ -d $1 ]
- then
- rm -r $1
- fi
- mkdir -p $1
- $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
- -I $PROTOBUF_ROOT/include/google/protobuf \
- --php_out=$1 --grpc_out=generate_server:$1 \
- --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_php_plugin \
- $WORKSPACE/protocols/*.proto
- }
- # -----------------------------------------------------------------------------
- declare -a languages=(
- "python"
- "ruby"
- "cpp"
- "csharp"
- "java"
- )
- for l in "${languages[@]}"
- do
- generate_grpc_by_lang $l
- done
- generate_grpc_for_php $WORKSPACE/sdk/php
- generate_for_morus
- generate_for_lily
- generate_for_tulip
- generate_grpc_web $WORKSPACE/../dashboard
- # ----------------------------------------------------------
- echo 'done.'
- exit 0
|