Quy tắc vùng đệm giao thức

7.3 · 7.2 · 7.1 · 7.0 · 6.5

Quy tắc

py_proto_library

Xem nguồn quy tắc
py_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Sử dụng `py_proto_library` để tạo thư viện Python từ các tệp `.proto`. Theo quy ước, bạn nên đặt tên quy tắc `py_proto_library` là `foo_py_pb2`, khi quy tắc này gói quy tắc `proto_library` `foo_proto`. `deps` phải trỏ đến quy tắc `proto_library`. Ví dụ: ```starlark py_library( name = "lib", deps = [":foo_py_pb2"], ) py_proto_library( name = "foo_py_pb2", deps = [":foo_proto"], ) proto_library( name = "foo_proto", srcs = ["foo.proto"], ) ```

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

deps

Danh sách nhãn; mặc định là []

Danh sách các quy tắc `proto_library` để tạo thư viện Python. Thông thường, đây chỉ là một mục tiêu: thư viện proto mà bạn quan tâm. Đây có thể là bất kỳ mục tiêu nào cung cấp `ProtoInfo`.

proto_lang_toolchain

Xem nguồn quy tắc
proto_lang_toolchain(name, allowlist_different_package, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, mnemonic, output_files, plugin, plugin_format_flag, progress_message, protoc_minimal_do_not_use, restricted_to, runtime, tags, target_compatible_with, testonly, toolchain_type, toolchains, visibility)

Nếu sử dụng Bazel, vui lòng tải quy tắc từ https://github.com/bazelbuild/rules_proto.

Chỉ định cách một quy tắc LANG_proto_library (ví dụ: java_proto_library) sẽ gọi trình biên dịch proto. Một số quy tắc LANG_proto_library cho phép chỉ định chuỗi công cụ nào sẽ sử dụng bằng cờ dòng lệnh; hãy tham khảo tài liệu của các quy tắc đó.

Thông thường, bạn không nên viết những loại quy tắc đó trừ phi bạn muốn điều chỉnh trình biên dịch Java.

Không có trình biên dịch. Trình biên dịch proto được lấy từ quy tắc proto_library mà chúng ta đính kèm. Cờ này được truyền dưới dạng cờ dòng lệnh đến Blaze. Một số tính năng yêu cầu phải gọi trình biên dịch proto trên chính quy tắc proto_library. Bạn nên thực thi trình biên dịch mà LANG_proto_library sử dụng giống với trình biên dịch mà proto_library sử dụng.

Ví dụ

Một ví dụ đơn giản:


proto_lang_toolchain(
    name = "javalite_toolchain",
    command_line = "--javalite_out=shared,immutable:$(OUT)",
    plugin = ":javalite_plugin",
    runtime = ":protobuf_lite",
)

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

allowlist_different_package

Nhãn; mặc định là None

blacklisted_protos

Danh sách nhãn; mặc định là []

Sẽ không có mã nào được tạo cho các tệp trong thuộc tính srcs của blacklisted_protos. Phương thức này được dùng cho các tệp .proto đã được liên kết vào thời gian chạy proto, chẳng hạn như any.proto.
command_line

Chuỗi; bắt buộc

Giá trị này sẽ được chuyển đến trình biên dịch proto để tạo mã. Chỉ bao gồm các phần dành riêng cho trình tạo mã/trình bổ trợ mã này (ví dụ: không bao gồm tham số -I)
  • $(OUT) là dành riêng cho LANG_proto_library. Các quy tắc này sẽ xác định cách chúng diễn giải biến này. Ví dụ: đối với Java, $(OUT) sẽ được thay thế bằng tên tệp src-jar để tạo.
mnemonic

Chuỗi; mặc định là "GenProto"

Giá trị này sẽ được đặt làm từ viết tắt trên thao tác protoc.
output_files

Chuỗi; mặc định là "legacy"

Kiểm soát cách định dạng $(OUT) trong command_line, bằng đường dẫn đến một tệp hoặc thư mục đầu ra trong trường hợp có nhiều tệp. Các giá trị có thể là: "single" (đơn), "multiple" (nhiều).
plugin

Nhãn; mặc định là None

Nếu được cung cấp, sẽ được cung cấp cho thao tác gọi trình biên dịch proto và sẽ được chuyển đến trình biên dịch proto: --plugin=protoc-gen-PLUGIN=<executable>.
plugin_format_flag

Chuỗi; giá trị mặc định là ""

Nếu được cung cấp, giá trị này sẽ được truyền đến trình biên dịch proto để sử dụng trình bổ trợ. Giá trị này phải chứa một %s duy nhất được thay thế bằng tệp thực thi của trình bổ trợ. --plugin=protoc-gen-PLUGIN=<executable>.
progress_message

Chuỗi; giá trị mặc định là "Generating proto_library %{label}"

Giá trị này sẽ được đặt làm thông báo tiến trình trên thao tác protoc.
protoc_minimal_do_not_use

Nhãn; mặc định là None

runtime

Nhãn; mặc định là None

Thư viện dành riêng cho ngôn ngữ mà mã được tạo được biên dịch. Hành vi chính xác là dành riêng cho language_proto_library. Ví dụ: Java phải biên dịch theo thời gian chạy.
toolchain_type

Nhãn; mặc định là None

proto_toolchain

Xem nguồn quy tắc
proto_toolchain(name, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, mnemonic, output_files, progress_message, proto_compiler, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

command_line

Chuỗi; mặc định là "--descriptor_set_out=%s"

mnemonic

Chuỗi; mặc định là "GenProtoDescriptorSet"

output_files

Chuỗi; mặc định là "single"

progress_message

Chuỗi; mặc định là "Generating Descriptor Set proto_library %{label}"

proto_compiler

Nhãn; mặc định là None