2
0

schema.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #!/bin/bash
  2. set -e
  3. export PROTOBUF_ROOT=$HOME/.local
  4. export WORKSPACE=$PWD
  5. # -----------------------------------------------------------------------------
  6. function generate_grpc_by_lang() {
  7. local target=$WORKSPACE/sdk/$1
  8. echo "generate code for grpc-$1"
  9. if [ -d $target ]
  10. then
  11. rm -r $target
  12. fi
  13. mkdir -p $target
  14. $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
  15. -I $PROTOBUF_ROOT/include/google/protobuf \
  16. --${1}_out=$target --grpc_out=$target \
  17. --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_${1}_plugin \
  18. $WORKSPACE/protocols/*.proto
  19. }
  20. function generate_flatbuffers(){
  21. echo "generate flatbuffers"
  22. flatc --rust -o $WORKSPACE/src/$2.rs $WORKSPACE/protocols/$1.fbs
  23. }
  24. # https://github.com/grpc/grpc-web#code-generator-plugin
  25. function generate_grpc_web() {
  26. echo "generate code for grpc-web"
  27. local target=$1/src/protocols
  28. if [ -d $target ]
  29. then
  30. rm -r $target
  31. fi
  32. mkdir -p $target
  33. $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
  34. -I $PROTOBUF_ROOT/include/google/protobuf \
  35. --js_out=import_style=commonjs,binary:$target \
  36. --grpc-web_out=import_style=typescript,mode=grpcweb:$target \
  37. $WORKSPACE/protocols/*.proto
  38. }
  39. function generate_for_morus() {
  40. echo "generate code for morus project"
  41. local target=$WORKSPACE/morus/morus
  42. local -a folders=(
  43. "GPBMetadata"
  44. "Mint"
  45. )
  46. for f in "${folders[@]}"
  47. do
  48. local t=$target/$f
  49. if [ -d $t ]
  50. then
  51. rm -r $t
  52. fi
  53. done
  54. $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
  55. -I $PROTOBUF_ROOT/include/google/protobuf \
  56. --php_out=$target --grpc_out=generate_server:$target \
  57. --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_php_plugin \
  58. $WORKSPACE/protocols/morus.proto
  59. }
  60. function generate_for_lily() {
  61. echo "generate code for lily project"
  62. local target=$WORKSPACE/lily/lily/palm
  63. local -a files=(
  64. "lily_pb2.py"
  65. "lily_pb2_grpc.py"
  66. )
  67. for f in "${files[@]}"
  68. do
  69. local t=$target/$f
  70. if [ -f $t ]
  71. then
  72. rm $t
  73. fi
  74. done
  75. $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
  76. -I $PROTOBUF_ROOT/include/google/protobuf \
  77. --python_out=$target --grpc_out=$target \
  78. --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_python_plugin \
  79. $WORKSPACE/protocols/lily.proto
  80. sed -i 's/import lily_/from . import lily_/g' $target/lily_pb2_grpc.py
  81. }
  82. function generate_for_tulip() {
  83. echo "generate code for tulip project"
  84. local target=$WORKSPACE/tulip/tulip
  85. local -a folders=(
  86. "GPBMetadata"
  87. "Mint"
  88. )
  89. for f in "${folders[@]}"
  90. do
  91. local t=$target/$f
  92. if [ -d $t ]
  93. then
  94. rm -r $t
  95. fi
  96. done
  97. $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
  98. -I $PROTOBUF_ROOT/include/google/protobuf \
  99. --php_out=$target --grpc_out=generate_server:$target \
  100. --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_php_plugin \
  101. $WORKSPACE/protocols/tulip.proto
  102. }
  103. function generate_grpc_for_php() {
  104. if [ -d $1 ]
  105. then
  106. rm -r $1
  107. fi
  108. mkdir -p $1
  109. $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
  110. -I $PROTOBUF_ROOT/include/google/protobuf \
  111. --php_out=$1 --grpc_out=generate_server:$1 \
  112. --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_php_plugin \
  113. $WORKSPACE/protocols/*.proto
  114. }
  115. # -----------------------------------------------------------------------------
  116. declare -a languages=(
  117. "python"
  118. "ruby"
  119. "cpp"
  120. "csharp"
  121. "java"
  122. )
  123. for l in "${languages[@]}"
  124. do
  125. generate_grpc_by_lang $l
  126. done
  127. generate_grpc_for_php $WORKSPACE/sdk/php
  128. generate_for_morus
  129. generate_for_lily
  130. generate_for_tulip
  131. generate_grpc_web $WORKSPACE/../dashboard
  132. # ----------------------------------------------------------
  133. echo 'done.'
  134. exit 0