update.sh 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. #!/bin/bash
  2. # Copyright 2018 Google Inc.
  3. #
  4. # Licensed under the Apache License, Version 2.0 (the "License");
  5. # you may not use this file except in compliance with the License.
  6. # You may obtain a copy of the License at
  7. #
  8. # http://www.apache.org/licenses/LICENSE-2.0
  9. #
  10. # Unless required by applicable law or agreed to in writing, software
  11. # distributed under the License is distributed on an "AS IS" BASIS,
  12. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. # See the License for the specific language governing permissions and
  14. # limitations under the License.
  15. set -euo pipefail
  16. IFS=$'\n\t'
  17. echo "Running update.sh"
  18. echo $(npm --version)
  19. # Variables
  20. PROTOS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
  21. WORK_DIR=`mktemp -d`
  22. cd ${PROTOS_DIR}
  23. # deletes the temp directory on exit
  24. function cleanup {
  25. rm -rf "$WORK_DIR"
  26. echo "Deleted temp working directory $WORK_DIR"
  27. }
  28. # register the cleanup function to be called on the EXIT signal
  29. trap cleanup EXIT
  30. # Capture location of pbjs / pbts before we pushd.
  31. PBJS="$(npm root)/.bin/pbjs"
  32. PBTS="$(npm root)/.bin/pbts"
  33. # Enter work dir
  34. pushd "$WORK_DIR"
  35. # Clone necessary git repos.
  36. git clone --depth 1 https://github.com/googleapis/googleapis.git
  37. # Protobuf may have breaking changes, so it will be pinned to a specific release.
  38. # TODO(version) nodejs-firestore should maintain the version number of protobuf manually
  39. git clone --single-branch --branch v26.1 --depth 1 https://github.com/google/protobuf.git
  40. # Copy necessary protos.
  41. mkdir -p "${PROTOS_DIR}/google/api"
  42. cp googleapis/google/api/{annotations,client,field_behavior,http,launch_stage,resource}.proto \
  43. "${PROTOS_DIR}/google/api/"
  44. mkdir -p "${PROTOS_DIR}/google/firestore/v1"
  45. cp googleapis/google/firestore/v1/*.proto \
  46. "${PROTOS_DIR}/google/firestore/v1/"
  47. mkdir -p "${PROTOS_DIR}/google/firestore/v1beta1"
  48. cp googleapis/google/firestore/v1beta1/*.proto \
  49. "${PROTOS_DIR}/google/firestore/v1beta1/"
  50. mkdir -p "${PROTOS_DIR}/google/firestore/admin/v1"
  51. cp googleapis/google/firestore/admin/v1/*.proto \
  52. "${PROTOS_DIR}/google/firestore/admin/v1/"
  53. mkdir -p "${PROTOS_DIR}/google/longrunning"
  54. cp googleapis/google/longrunning/operations.proto \
  55. "${PROTOS_DIR}/google/longrunning/"
  56. mkdir -p "${PROTOS_DIR}/google/rpc"
  57. cp googleapis/google/rpc/status.proto \
  58. "${PROTOS_DIR}/google/rpc/"
  59. mkdir -p "${PROTOS_DIR}/google/type"
  60. cp googleapis/google/type/{latlng,dayofweek}.proto \
  61. "${PROTOS_DIR}/google/type/"
  62. mkdir -p "${PROTOS_DIR}/google/protobuf"
  63. cp protobuf/src/google/protobuf/{any,descriptor,empty,field_mask,struct,timestamp,wrappers,duration}.proto \
  64. "${PROTOS_DIR}/google/protobuf/"
  65. popd
  66. # Generate the Protobuf typings
  67. PBJS_ARGS=( -p . \
  68. --js_out=import_style=commonjs,binary:library \
  69. --target=static-module \
  70. --no-create \
  71. --no-encode \
  72. --no-decode \
  73. --no-verify \
  74. --no-delimited \
  75. --force-enum-string)
  76. "${PBJS}" "${PBJS_ARGS[@]}" -o firestore_v1_proto_api.js \
  77. -r firestore_v1 \
  78. "google/firestore/v1/*.proto" \
  79. "firestore/*.proto" \
  80. "google/protobuf/*.proto" "google/type/*.proto" \
  81. "google/rpc/*.proto" "google/api/*.proto" \
  82. "google/longrunning/*.proto"
  83. perl -pi -e 's/number\|Long/number\|string/g' firestore_v1_proto_api.js
  84. "${PBTS}" -o firestore_v1_proto_api.d.ts firestore_v1_proto_api.js
  85. "${PBJS}" "${PBJS_ARGS[@]}" -o firestore_admin_v1_proto_api.js \
  86. -r firestore_admin_v1 \
  87. "google/firestore/admin/v1/*.proto" \
  88. "google/protobuf/*.proto" "google/type/*.proto" \
  89. "google/rpc/*.proto" "google/api/*.proto" \
  90. "google/longrunning/*.proto"
  91. perl -pi -e 's/number\|Long/number\|string/g' firestore_admin_v1_proto_api.js
  92. "${PBTS}" -o firestore_admin_v1_proto_api.d.ts firestore_admin_v1_proto_api.js
  93. "${PBJS}" "${PBJS_ARGS[@]}" -o firestore_v1beta1_proto_api.js \
  94. -r firestore_v1beta1 \
  95. "google/firestore/v1beta1/*.proto" \
  96. "google/protobuf/*.proto" "google/type/*.proto" \
  97. "google/rpc/*.proto" "google/api/*.proto" \
  98. "google/longrunning/*.proto"
  99. perl -pi -e 's/number\|Long/number\|string/g' firestore_v1beta1_proto_api.js
  100. "${PBTS}" -o firestore_v1beta1_proto_api.d.ts firestore_v1beta1_proto_api.js
  101. "${PBJS}" -p . --target=json -o v1.json \
  102. -r firestore_v1 \
  103. "google/firestore/v1/*.proto" \
  104. "google/protobuf/*.proto" "google/type/*.proto" \
  105. "google/rpc/*.proto" "google/api/*.proto"
  106. "${PBJS}" -p . --target=json -o admin_v1.json \
  107. -r firestore_admin_v1 \
  108. "google/firestore/admin/v1/*.proto" \
  109. "google/protobuf/*.proto" "google/type/*.proto" \
  110. "google/rpc/*.proto" "google/api/*.proto" \
  111. "google/longrunning/*.proto"
  112. "${PBJS}" -p . --target=json -o v1beta1.json \
  113. -r firestore_v1beta1 \
  114. "google/firestore/v1beta1/*.proto" \
  115. "google/protobuf/*.proto" "google/type/*.proto" \
  116. "google/rpc/*.proto" "google/api/*.proto"
  117. echo "Finished running update.sh"
  118. node ../../scripts/license.js ../../build ../protos