schema.sh 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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/clients/$1
  8. echo "generate code for grpc-$1"
  9. if [ -d $target ]
  10. then
  11. if [[ "$1" == "php" ]]
  12. then
  13. declare -a folders=(
  14. "GPBMetadata"
  15. "Mint"
  16. "Palm"
  17. )
  18. for f in "${folders[@]}"
  19. do
  20. local t=$target/$1/$f
  21. if [ -d $t ]
  22. then
  23. rm -f $t
  24. fi
  25. done
  26. else
  27. rm -r $target
  28. fi
  29. fi
  30. mkdir -p $target
  31. $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
  32. -I $PROTOBUF_ROOT/include/google/protobuf \
  33. --${1}_out=$target --grpc_out=$target \
  34. --plugin=protoc-gen-grpc=$PROTOBUF_ROOT/bin/grpc_${1}_plugin \
  35. $WORKSPACE/protocols/*.proto
  36. }
  37. function generate_flatbuffers(){
  38. echo "generate flatbuffers"
  39. flatc --rust -o $WORKSPACE/src/$2.rs $WORKSPACE/protocols/$1.fbs
  40. }
  41. # https://github.com/grpc/grpc-web#code-generator-plugin
  42. function generate_grpc_web() {
  43. echo "generate code for grpc-web"
  44. local target=$WORKSPACE/dashboard/src/protocols
  45. if [ -d $target ]
  46. then
  47. rm -r $target
  48. fi
  49. mkdir -p $target
  50. $PROTOBUF_ROOT/bin/protoc -I $WORKSPACE/protocols \
  51. -I $PROTOBUF_ROOT/include/google/protobuf \
  52. --js_out=import_style=commonjs,binary:$target \
  53. --grpc-web_out=import_style=typescript,mode=grpcweb:$target \
  54. $WORKSPACE/protocols/*.proto
  55. }
  56. # -----------------------------------------------------------------------------
  57. declare -a languages=(
  58. "python"
  59. "ruby"
  60. "cpp"
  61. "csharp"
  62. "java"
  63. "php"
  64. )
  65. for l in "${languages[@]}"
  66. do
  67. generate_grpc_by_lang $l
  68. done
  69. generate_grpc_web
  70. # ----------------------------------------------------------
  71. echo 'done.'
  72. exit 0