BazelCon 2022 מגיע בין 16 ל-17 בנובמבר לניו יורק באינטרנט.
הירשמו עוד היום!

כללי מאגר נתונים זמני

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

כללים

Proto_lang_toolschain

proto_lang_toolchain(name, blacklisted_protos, command_line, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, mnemonic, plugin, plugin_format_flag, progress_message, proto_compiler, restricted_to, runtime, tags, target_compatible_with, testonly, visibility)

הוצא משימוש. במקום https://github.com/bazelbuild/rules_proto.

מציין איך הכלל lang_proto_library (למשל: java_proto_library) צריך להפעיל את ה-Proto מהדר. כמה כללים מסוג lang_proto_library מאפשרים לציין באיזה כלי צריך להשתמש באמצעות תכונות ניסיוניות של שורת הפקודה. מומלץ לעיין במסמכים שלהם.

בדרך כלל אין לכתוב כללים כאלה, אלא אם רוצים להתאים את מהדר Java.

אין מהדר. ה-Proto-Composer נלקח מהכלל Proto_library שאליו אנחנו מצרפים. הוא מועבר כסימון בשורת הפקודה ל-Blaze. כדי להשתמש בחלק מהפיצ'רים, יש להפעיל את ה-פרוטו-מהדר כדי להפעיל את הכלל proto_library עצמו. כדאי לאכוף את המהדר שבו lang_proto_library זהה לזה proto_library.

דוגמאות

דוגמה פשוטה:

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

ארגומנטים

מאפיינים
name

Name; required

שם ייחודי ליעד הזה.

blacklisted_protos

List of labels; optional

לא יופק קוד לקבצים במאפיין srcs של blacklisted_protos. הפעולה הזו משמשת לקובצי .proto שכבר מקושרים לזמני ריצה של Proto, כמו any.proto.
command_line

String; required

הערך הזה יועבר לדוח הפרוטוקול כדי ליצור את הקוד. צריך לכלול רק את החלקים הספציפיים למחולל הקוד/לפלאגין הזה (למשל, לא לכלול פרמטרים מסוג -I)
  • הערך של $(OUT) הוא lang_proto_library. הכללים צפויים להגדיר את האופן שבו הם מפרשים את המשתנה. ב-Java, לדוגמה, הערך $(OUT) יוחלף בשם הקובץ של src-chromium שייווצר.
mnemonic

String; optional; default is "GenProto"

הערך הזה יוגדר כפונקציה בפעולה של פרוטוקל.
plugin

Label; optional

אם מזינים את הפרטים האלה, הם יהיו זמינים לפעולה שמקיפה את המהדר הזה, ויועבר לאפילטור הפרוטו: --plugin=protoc-gen-PLUGIN=.
plugin_format_flag

String; optional

אם הוזן ערך, הוא יועבר ל-proto Compiler כדי להשתמש בפלאגין. הערך חייב להכיל %s יחיד שמוחלף בקובץ הפעלה. --plugin=protoc-gen-PLUGIN=.
progress_message

String; optional; default is "Generating proto_library %{label}"

הערך הזה יוגדר כהודעת ההתקדמות של הפעולה ב-protrok.
proto_compiler

Label; optional

קובץ ה-פרוטו מהדר מתבצע. אם נקבל את הקוד הזה, נשתמש בו בתור מהדר הידור כדי ליצור את הקוד.
runtime

Label; optional

ספרייה ספציפית שהקוד שנוצר בה מורכב. ההתנהגות המדויקת היא ספציפית ל-lang_proto_library. לדוגמה, Java צריך להיות מקופל בזמן הריצה.

Proto_library

proto_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, import_prefix, licenses, restricted_to, strip_import_prefix, tags, target_compatible_with, testonly, visibility)

הוצא משימוש. במקום זאת, יש להשתמש בכתובת https://github.com/bazelbuild/rules_proto.

יש להשתמש במדיניות proto_library כדי להגדיר ספריות של מאגרי נתונים בפרוטוקול, שניתן להשתמש בהן בשפות מרובות. proto_library יכול להיות רשום בסעיף deps של כללים נתמכים, כמו java_proto_library.

כשמתבצעת הדבקה בשורת הפקודה, proto_library יוצר קובץ בשם foo-descriptor-set.proto.bin, שהוא התיאור של ההודעות שהכלל מאתר. הקובץ הוא FileDescriptorSet בסדר סידורי, כמתואר ב- https://developers.google.com/protocol-buffers/docs/techniques#self-description.

הוא מכיל רק מידע על קובצי .proto שמוזכרים ישירות בכלל proto_library; האוסף של קבוצות מתאר עקיפות זמין דרך ספק הכוכב של [ProtoInfo].transitive_descriptor_sets. אפשר לעיין בתיעוד ב-ProtoInfo.java.

ארגון קוד מומלץ:

  • כלל אחד (proto_library) לכל קובץ .proto.
  • קובץ בשם foo.proto יהיה בכלל בשם foo_proto, שנמצא באותה חבילה.
  • קוד [language]_proto_library שמקיף proto_library בשם foo_proto צריך להופיע בשם foo_[language]_proto, ולהיות באותה חבילה.

ארגומנטים

מאפיינים
name

Name; required

שם ייחודי ליעד הזה.

deps

List of labels; optional

רשימת הכללים האחרים של proto_library שהיעד תלוי בהם. proto_library יכול להיות תלוי רק ביעדים אחרים של proto_library. ייתכן שהמספר לא תלוי בספריות ספציפיות לשפה.
srcs

List of labels; optional

רשימת הקבצים ב-.proto וב-.protodevel שנמצאים בעיבוד לצורך יצירת היעד. בדרך כלל זוהי רשימה שאינה ריקה. תרחיש לדוגמה אחד שבו srcs יכול להיות ריק הוא ספריית כינויים. זהו כלל proto_library שמכיל כלל אחד או יותר מסוג proto_library ב-deps. ניתן להשתמש בתבנית הזו כדי לייצא למשל ממשק API ציבורי ולהשתמש בשם קבוע.
exports

List of labels; optional

רשימה של יעדים מסוג proto_library שניתן להפנות אליהם דרך "ייבוא ציבורי" במקור המקור.
import_prefix

String; optional

הקידומת שיש להוסיף לנתיבים של קובצי .proto בכלל הזה.

כאשר הם מוגדרים, קובצי ה- .proto של מקורות במאפיין srcs של הכלל הזה נגישים הוא הערך של המאפיין הזה לפני הנתיב היחסי שלהם למאגר.

התחילית של המאפיין strip_import_prefix תוסר לפני הוספת הקידומת.

strip_import_prefix

String; optional

הקידומת שיש להסיר מהנתיבים של קובצי .proto בכלל הזה.

לאחר ההגדרה, קובצי ה- .proto של המקור במאפיין 'srcs' של הכלל הזה יהיו נגישים בנתיב שלהם עם הסיומת הזו.

אם מדובר בנתיב יחסי (לא מתחיל בקו נטוי), הוא נחשב כנתיב יחסי בחבילה. אם מדובר בנתיב מוחלט, הוא מובן כנתיב יחסי במאגר.

התחילית במאפיין import_prefix תתווסף אחרי שהקידומת הוסרה.