You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

110 lines
4.0 KiB

  1. #!/bin/bash
  2. # This script generates all GAPIC clients in this repo.
  3. # One-time setup:
  4. # cd path/to/googleapis # https://github.com/googleapis/googleapis
  5. # virtualenv env
  6. # . env/bin/activate
  7. # pip install googleapis-artman
  8. # deactivate
  9. #
  10. # Regenerate:
  11. # cd path/to/googleapis
  12. # . env/bin/activate
  13. # $GOPATH/src/cloud.google.com/go/regen-gapic.sh
  14. # deactivate
  15. #
  16. # Being in googleapis directory is important;
  17. # that's where we find YAML files and where artman puts the "artman-genfiles" directory.
  18. #
  19. # NOTE: This script does not generate the "raw" gRPC client found in google.golang.org/genproto.
  20. # To do that, use the regen.sh script in the genproto repo instead.
  21. set -ex
  22. APIS=(
  23. google/api/expr/artman_cel.yaml
  24. google/iam/artman_iam_admin.yaml
  25. google/cloud/asset/artman_cloudasset_v1beta1.yaml
  26. google/iam/credentials/artman_iamcredentials_v1.yaml
  27. google/cloud/bigquery/datatransfer/artman_bigquerydatatransfer.yaml
  28. google/cloud/bigquery/storage/artman_bigquerystorage_v1beta1.yaml
  29. google/cloud/dataproc/artman_dataproc_v1.yaml
  30. google/cloud/dataproc/artman_dataproc_v1beta2.yaml
  31. google/cloud/dialogflow/artman_dialogflow_v2.yaml
  32. google/cloud/iot/artman_cloudiot.yaml
  33. google/cloud/irm/artman_irm_v1alpha2.yaml
  34. google/cloud/kms/artman_cloudkms.yaml
  35. google/cloud/language/artman_language_v1.yaml
  36. google/cloud/language/artman_language_v1beta2.yaml
  37. google/cloud/oslogin/artman_oslogin_v1.yaml
  38. google/cloud/oslogin/artman_oslogin_v1beta.yaml
  39. google/cloud/redis/artman_redis_v1beta1.yaml
  40. google/cloud/redis/artman_redis_v1.yaml
  41. google/cloud/scheduler/artman_cloudscheduler_v1beta1.yaml
  42. google/cloud/scheduler/artman_cloudscheduler_v1.yaml
  43. google/cloud/securitycenter/artman_securitycenter_v1beta1.yaml
  44. google/cloud/securitycenter/artman_securitycenter_v1.yaml
  45. google/cloud/speech/artman_speech_v1.yaml
  46. google/cloud/speech/artman_speech_v1p1beta1.yaml
  47. google/cloud/talent/artman_talent_v4beta1.yaml
  48. google/cloud/tasks/artman_cloudtasks_v2beta2.yaml
  49. google/cloud/tasks/artman_cloudtasks_v2beta3.yaml
  50. google/cloud/texttospeech/artman_texttospeech_v1.yaml
  51. google/cloud/videointelligence/artman_videointelligence_v1.yaml
  52. google/cloud/videointelligence/artman_videointelligence_v1beta1.yaml
  53. google/cloud/videointelligence/artman_videointelligence_v1beta2.yaml
  54. google/cloud/vision/artman_vision_v1.yaml
  55. google/cloud/vision/artman_vision_v1p1beta1.yaml
  56. google/devtools/artman_clouddebugger.yaml
  57. google/devtools/clouderrorreporting/artman_errorreporting.yaml
  58. google/devtools/cloudtrace/artman_cloudtrace_v1.yaml
  59. google/devtools/cloudtrace/artman_cloudtrace_v2.yaml
  60. google/devtools/containeranalysis/artman_containeranalysis_v1beta1.yaml
  61. google/firestore/artman_firestore.yaml
  62. google/logging/artman_logging.yaml
  63. google/longrunning/artman_longrunning.yaml
  64. google/monitoring/artman_monitoring.yaml
  65. google/privacy/dlp/artman_dlp_v2.yaml
  66. google/pubsub/artman_pubsub.yaml
  67. google/spanner/admin/database/artman_spanner_admin_database.yaml
  68. google/spanner/admin/instance/artman_spanner_admin_instance.yaml
  69. google/spanner/artman_spanner.yaml
  70. )
  71. for api in "${APIS[@]}"; do
  72. rm -rf artman-genfiles/*
  73. artman --config "$api" generate go_gapic
  74. cp -r artman-genfiles/gapi-*/cloud.google.com/go/* $GOPATH/src/cloud.google.com/go/
  75. done
  76. pushd $GOPATH/src/cloud.google.com/go/
  77. gofmt -s -d -l -w . && goimports -w .
  78. # NOTE(pongad): `sed -i` doesn't work on Macs, because -i option needs an argument.
  79. # `-i ''` doesn't work on GNU, since the empty string is treated as a file name.
  80. # So we just create the backup and delete it after.
  81. ver=$(date +%Y%m%d)
  82. git ls-files -mo | while read modified; do
  83. dir=${modified%/*.*}
  84. find . -path "*/$dir/doc.go" -exec sed -i.backup -e "s/^const versionClient.*/const versionClient = \"$ver\"/" '{}' +
  85. done
  86. popd
  87. HASMANUAL=(
  88. errorreporting/apiv1beta1
  89. firestore/apiv1beta1
  90. firestore/apiv1
  91. logging/apiv2
  92. longrunning/autogen
  93. pubsub/apiv1
  94. spanner/apiv1
  95. trace/apiv1
  96. )
  97. for dir in "${HASMANUAL[@]}"; do
  98. find "$GOPATH/src/cloud.google.com/go/$dir" -name '*.go' -exec sed -i.backup -e 's/setGoogleClientInfo/SetGoogleClientInfo/g' '{}' '+'
  99. done
  100. find $GOPATH/src/cloud.google.com/go/ -name '*.backup' -delete