schema.sh 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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/tmp/protocols/$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=$WORKSPACE/dashboard/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. # -----------------------------------------------------------------------------
  40. declare -a languages=(
  41. # "node"
  42. "php"
  43. "python"
  44. "ruby"
  45. "cpp"
  46. "csharp"
  47. # https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-java/
  48. "java"
  49. # "objective_c"
  50. )
  51. for l in "${languages[@]}"
  52. do
  53. generate_grpc_by_lang $l
  54. done
  55. generate_grpc_web
  56. # ----------------------------------------------------------
  57. echo 'done.'
  58. exit 0