Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d97004a

Browse files
committed
Making pb2 auto-gen script also copy over .proto files.
Fully revamping the script to be more read-able, split into sections: - Compile `.proto` to `_pb2.py` files - Move over `_pb2.py` files into our library - Clear out old `.proto` files in library - Move over the newly compiled `.proto` files into library and remove the executable bits and prepend them with `_`
1 parent aca137f commit d97004a

File tree

1 file changed

+41
-44
lines changed

1 file changed

+41
-44
lines changed

Makefile

Lines changed: 41 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
GENERATED_DIR=$(shell pwd)/generated_python
2-
FINAL_DIR=gcloud/bigtable/_generated
2+
FINAL_DIR=$(shell pwd)/gcloud/bigtable/_generated
33
GRPC_PLUGIN=grpc_python_plugin
4+
PROTOC_CMD=protoc
5+
PROTOS_DIR=$(shell pwd)/cloud-bigtable-client/bigtable-protos/src/main/proto
46

57
help:
68
@echo 'Makefile for gcloud-python Bigtable protos '
@@ -13,59 +15,54 @@ generate:
1315
[ -d cloud-bigtable-client ] || git clone https://github.com/GoogleCloudPlatform/cloud-bigtable-client
1416
cd cloud-bigtable-client && git pull origin master
1517
mkdir -p $(GENERATED_DIR)
16-
# Data API
17-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
18-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
19-
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) google/bigtable/v1/*.proto
20-
mv $(GENERATED_DIR)/google/bigtable/v1/* $(FINAL_DIR)
21-
# Cluster API
22-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
23-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
18+
# Generate all *_pb2.py files.
19+
$(PROTOC_CMD) \
20+
--proto_path=$(PROTOS_DIR) \
2421
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) \
25-
google/bigtable/admin/cluster/v1/*.proto
22+
--python_out=$(GENERATED_DIR) \
23+
--grpc_out=$(GENERATED_DIR) \
24+
$(PROTOS_DIR)/google/bigtable/v1/*.proto \
25+
$(PROTOS_DIR)/google/bigtable/admin/cluster/v1/*.proto \
26+
$(PROTOS_DIR)/google/bigtable/admin/table/v1/*.proto \
27+
$(PROTOS_DIR)/google/api/*.proto \
28+
$(PROTOS_DIR)/google/protobuf/any.proto \
29+
$(PROTOS_DIR)/google/protobuf/duration.proto \
30+
$(PROTOS_DIR)/google/protobuf/empty.proto \
31+
$(PROTOS_DIR)/google/protobuf/timestamp.proto \
32+
$(PROTOS_DIR)/google/longrunning/operations.proto \
33+
$(PROTOS_DIR)/google/rpc/status.proto
34+
# Move the newly generated *_pb2.py files into our library.
35+
mv $(GENERATED_DIR)/google/bigtable/v1/* $(FINAL_DIR)
2636
mv $(GENERATED_DIR)/google/bigtable/admin/cluster/v1/* $(FINAL_DIR)
27-
# Table API
28-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
29-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
30-
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) \
31-
google/bigtable/admin/table/v1/*.proto
3237
mv $(GENERATED_DIR)/google/bigtable/admin/table/v1/* $(FINAL_DIR)
33-
# Auxiliary protos
34-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
35-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
36-
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) \
37-
google/api/*.proto
3838
mv $(GENERATED_DIR)/google/api/* $(FINAL_DIR)
39-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
40-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
41-
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) \
42-
google/protobuf/any.proto
4339
mv $(GENERATED_DIR)/google/protobuf/any_pb2.py $(FINAL_DIR)
44-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
45-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
46-
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) \
47-
google/protobuf/duration.proto
4840
mv $(GENERATED_DIR)/google/protobuf/duration_pb2.py $(FINAL_DIR)
49-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
50-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
51-
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) \
52-
google/protobuf/empty.proto
5341
mv $(GENERATED_DIR)/google/protobuf/empty_pb2.py $(FINAL_DIR)
54-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
55-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
56-
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) \
57-
google/protobuf/timestamp.proto
5842
mv $(GENERATED_DIR)/google/protobuf/timestamp_pb2.py $(FINAL_DIR)
59-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
60-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
61-
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) \
62-
google/longrunning/operations.proto
6343
mv $(GENERATED_DIR)/google/longrunning/operations_pb2.py $(FINAL_DIR)
64-
cd cloud-bigtable-client/bigtable-protos/src/main/proto && \
65-
protoc --python_out=$(GENERATED_DIR) --grpc_out=$(GENERATED_DIR) \
66-
--plugin=protoc-gen-grpc=$(GRPC_PLUGIN) \
67-
google/rpc/status.proto
6844
mv $(GENERATED_DIR)/google/rpc/status_pb2.py $(FINAL_DIR)
45+
# Remove all existing *.proto files before we replace
46+
rm -f $(FINAL_DIR)/*.proto
47+
# Copy over the *.proto files into our library.
48+
cp $(PROTOS_DIR)/google/bigtable/v1/*.proto $(FINAL_DIR)
49+
cp $(PROTOS_DIR)/google/bigtable/admin/cluster/v1/*.proto $(FINAL_DIR)
50+
cp $(PROTOS_DIR)/google/bigtable/admin/table/v1/*.proto $(FINAL_DIR)
51+
cp $(PROTOS_DIR)/google/api/*.proto $(FINAL_DIR)
52+
cp $(PROTOS_DIR)/google/protobuf/any.proto $(FINAL_DIR)
53+
cp $(PROTOS_DIR)/google/protobuf/duration.proto $(FINAL_DIR)
54+
cp $(PROTOS_DIR)/google/protobuf/empty.proto $(FINAL_DIR)
55+
cp $(PROTOS_DIR)/google/protobuf/timestamp.proto $(FINAL_DIR)
56+
cp $(PROTOS_DIR)/google/longrunning/operations.proto $(FINAL_DIR)
57+
cp $(PROTOS_DIR)/google/rpc/status.proto $(FINAL_DIR)
58+
# Rename all *.proto files in our library with an
59+
# underscore and remove executable bit.
60+
cd $(FINAL_DIR) && \
61+
for filename in *.proto; do \
62+
chmod -x $$filename ; \
63+
mv $$filename _$$filename ; \
64+
done
65+
# Rewrite the imports in the generated *_pb2.py files.
6966
python scripts/rewrite_imports.py
7067

7168
check_generate:

0 commit comments

Comments
 (0)