سيتم إطلاق BazelCon لعام 2022 في الفترة من 16 إلى 17 تشرين الثاني (نوفمبر) في نيويورك وعلى الإنترنت. التسجيل اليوم
جديد: انضم إلينا في يوم المنتدى في 15 تشرين الثاني (نوفمبر). التفاصيل والتسجيل:

الإجراءات

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
وحدة تقدّم الدوال لإنشاء الإجراءات. يمكنك الوصول إلى هذه الوحدة باستخدام ctx.actions.

المشتركون الداعمون

الوسيطات

Args actions.args()

لعرض كائن Args الذي يمكن استخدامه لإنشاء أسطر أوامر فعّالة في الذاكرة.

بيان_الدليل

File actions.declare_directory(filename, *, sibling=None)

تعلن أن القاعدة أو الجانب ينشئ دليلاً بالاسم المحدد في الحزمة الحالية. عليك إنشاء إجراء ينشئ الدليل. لا يمكن الوصول مباشرةً إلى محتوى الدليل من Starlark، ولكن يمكن توسيعه في أمر إجراء باستخدام Args.add_all().

المَعلمات

المعلمة الوصف
filename مطلوب
إذا لم يتم تقديم 'sibling' مسار الدليل الجديد، بالنسبة إلى الحزمة الحالية. بخلاف ذلك، يمثل الاسم الأساسي للملف ('sibling' تعريف دليل).
sibling File; or None; default = None
ملف موجود في الدليل نفسه الذي تم استخدامه في الدليل المُعلَن عنه حديثًا يجب أن يكون الملف ضمن الحزمة الحالية.

بيان_الملف

File actions.declare_file(filename, *, sibling=None)

تعلن أن القاعدة أو الجانب ينشئ ملفًا باسم الملف المحدد. إذا لم يتم تحديد sibling، سيكون اسم الملف مرتبطًا بدليل الحزمة، وإلا سيكون الملف في الدليل نفسه الذي يحمله sibling. لا يمكن إنشاء ملفات خارج الحزمة الحالية.

تذكّر أنه بالإضافة إلى الإعلان عن ملف، عليك إنشاء إجراء منفصل يصدر الملف. سيتطلب إنشاء هذا الإجراء تمرير الكائن File المعروض إلى دالة الإنشاء'.

تجدر الإشارة إلى أنه يجب عدم الإعلان عن ملفات المخرجات المُعلَن عنها مسبقًا (ولا يمكن الإعلان عنها) باستخدام هذه الدالة. يمكنك الحصول على كائنات File من ctx.outputs بدلاً من ذلك. راجع مثال الاستخدام.

المَعلمات

المعلمة الوصف
filename مطلوبة
إذا لم يتم تقديم 'sibling' مسار الملف الجديد، في ما يتعلق بالحزمة الحالية. بخلاف ذلك، يكون الاسم الأساسي للملف ('sibling' يحدد دليلًا).
sibling File; or None; default = None
ملف موجود في الدليل نفسه للملف الذي تم إنشاؤه حديثًا يجب أن يكون الملف ضمن الحزمة الحالية.

File actions.declare_symlink(filename, *, sibling=None)

تجريبية: هذه المعلّمة تجريبية وقد تتغير في أي وقت. يُرجى عدم الاعتماد عليه. قد يتم تفعيل هذا الإعداد بشكل تجريبي من خلال ضبط --experimental_allow_unresolved_symlinks.

تعلن أن القاعدة أو الجانب ينشئ رابطًا رمزيًا بالاسم المذكور في الحزمة الحالية. يجب إنشاء إجراء ينشئ هذا الرابط الرمزي. لن تعمل Bazel على إلغاء الإشارة إلى هذا الرابط الرمزي وستحوّله حرفيًا إلى وضع الحماية أو الجهات التنفيذية عن بُعد.

المَعلمات

المعلمة الوصف
filename مطلوبة
إذا لم يتم إدخال 'sibling'، يعني ذلك أنّه مسار المسار الرمزي الجديد بالنسبة إلى الحزمة الحالية. بخلاف ذلك، يمثل الاسم الأساسي للملف ('sibling' تعريف دليل).
sibling File; or None; default = None
ملف يتوفّر في الدليل نفسه الذي يتضمّن الرابط الرمزي المعلَن عنه حديثًا

لا شيء

None actions.do_nothing(mnemonic, inputs=[])

تنشئ إجراءً فارغًا لا ينفّذ أمرًا أو ينتج عنه أي نتائج، ولكنه مفيد لإدراج 'الإجراءات الإضافية&#39؛

المَعلمات

المعلمة الوصف
mnemonic مطلوبة
وصف مكوّن من كلمة واحدة للإجراء، مثل CppCompile أو GoLink.
inputs sequence of Files; or depset؛ default = []
قائمة بملفات الإدخال الخاصة بالإجراء.

توسيع_نموذج

None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)

إنشاء إجراء توسيع النموذج. عند تنفيذ الإجراء، سيتم إنشاء ملف استنادًا إلى نموذج. سيتم استبدال أجزاء من النموذج بقاموس substitutions بالترتيب الذي تم تحديد البدائل به. وعندما يظهر مفتاح من القاموس في النموذج (أو نتيجة لعملية استبدال سابقة)، يتم استبداله بالقيمة المرتبطة به. ما من بنية خاصة للمفاتيح. فعلى سبيل المثال، يمكنك استخدام أقواس متعرجة لتجنب التعارضات (على سبيل المثال، {KEY}). راجع مثال الاستخدام.

المَعلمات

المعلمة الوصف
template مطلوب
ملف النموذج، وهو ملف نصي بالترميز UTF-8.
output مطلوب
ملف الإخراج، وهو ملف نصي بترميز UTF-8.
substitutions default = {}
عمليات الاستبدال التي يجب إجراؤها عند توسيع النموذج
is_executable default = False
ما إذا كان يجب أن يكون ملف الإخراج قابلاً للتنفيذ أم لا.
computed_substitutions TemplateDict; default = unbound
تجريبية. هذه المعلّمة تجريبية وقد تتغير في أي وقت. يُرجى عدم الاعتماد عليه. وقد يتم تفعيلها على أساس تجريبي من خلال ضبط --+experimental_lazy_template_expansion
تجريبية: البدائل التي يتم إجراؤها عند توسيع النموذج.

تنفيذ

None actions.run(outputs, inputs=[], unused_inputs_list=None, executable, tools=unbound, arguments=[], mnemonic=None, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None)

تنشئ إجراءً يشغّل ملفًا تنفيذيًا. راجع مثال الاستخدام.

المَعلمات

المعلمة الوصف
outputs sequence of Files، مطلوبة
قائمة بملفات إخراج الإجراء
inputs sequence of Files; or depset؛ default = []
قائمة ملفات الإدخال أو إلغاء ضبطها.
unused_inputs_list File; or None; default = None
ملف يحتوي على قائمة من الإدخالات غير المستخدمة من خلال الإجراء.

يتوافق محتوى هذا الملف (بشكل عام، أحد مخرجات الإجراء) مع قائمة ملفات الإدخال التي لم يتم استخدامها أثناء تنفيذ الإجراء بالكامل. ويجب ألا يؤثر أي تغيير في هذه الملفات بأي شكل من الأشكال على نتائج الإجراء.

executable File; or string; or FilesToRunProvider، مطلوب
الملف التنفيذي الذي سيتم طلبه من خلال الإجراء.
tools sequence; or depset; default = غير مقيّد
قائمة بالأدوات التي يحتاج إليها الإجراء أو إلغاء ترتيبها. الأدوات هي مدخلات تتضمن ملفات تشغيل إضافية تتم إتاحتها تلقائيًا للإجراء. عند توفير قائمة، يمكن أن تكون مجموعة متفرقة من الملفات أو أمثلة FilesToRunProvider أو مجموعات الملفات. الملفات التي تكون مباشرةً في القائمة والتي تأتي من ctx.executable ستتم إضافة ملفات الجري إليها تلقائيًا. عند توفير محدّدة، يجب أن يحتوي على الملفات فقط. وفي كلتا الحالتين، لا تتم الإشارة إلى الملفات ضمن مجموعات الملفات باستخدام الأمر ctx.executable في ملفات التشغيل.
arguments sequence; default = []
وسيطات سطر الأوامر في الإجراء يجب أن تكون قائمة بسلاسل أو كائنات actions.args().
mnemonic string; or None; default = None
وصف للإجراء مكوَّن من كلمة واحدة، مثل CppCompile أو GoLink.
progress_message string; or None; default = None
رسالة مستوى التقدّم التي سيتم عرضها للمستخدم خلال عملية الإنشاء، على سبيل المثال، "Compiling foo.cc لإنشاء foo.o" قد تحتوي الرسالة على أنماط %{label} أو %{input} أو %{output}، والتي يتم استبدالها بسلسلة تصنيف، أو الإدخال الأول، أو مسار الإخراج، على التوالي. أفضِّل استخدام الأنماط بدلاً من السلاسل الثابتة، لأنها السابقة أكثر فعالية.
use_default_shell_env default = False
ما إذا كان يجب أن يستخدم الإجراء البيئة المضمَّنة أم لا.
env dict; or None، default = None
لضبط قاموس متغيّرات البيئة.
execution_requirements dict; or None؛ default = None
معلومات لجدولة الإجراء. اطّلِع على العلامات للتعرّف على المفاتيح المفيدة.
input_manifests sequence; or None; default = None
(ميزة تجريبية) تضبط البيانات الوصفية لتشغيل ملفات الإدخال، وعادةً ما يتم إنشاؤها من خلال order_command.
exec_group string; or None; default = None
يشغّل الإجراء على منصة تنفيذ exec group's. إذا لم يكن الأمر كذلك، يتم استخدام النظام الأساسي التلقائي للتنفيذ "الهدف".
shadowed_action Action; default = None
يتم تنفيذ الإجراء باستخدام الإجراء المُحدَّد مظلل والمدخلات والبيئة التي تتم إضافتها إلى قائمة مدخلات الإجراء's. يمكن لبيئة الإجراءات أن تستبدل أيًا من متغيرات بيئة العمل المظللة. إذا لم يكن هناك شيء، يتم استخدام إدخالات الإجراء فقط.
resource_set callable; or None; default = None
دالة رد اتصال تعرض قاموس مجموعة موارد، وتُستخدم لتقدير استخدام الموارد في وقت التنفيذ إذا تم تشغيل هذا الإجراء محليًا.

تقبل الدالة وسيطتين موضعيتين: سلسلة تمثل اسم نظام التشغيل (مثل "osx")، وعددًا صحيحًا يمثل عدد مرات الإدخال إلى الإجراء. قد يحتوي القاموس المعروض على الإدخالات التالية، قد يكون كل منها عائمًا أو حظًا:

  • "cpu": عدد وحدات المعالجة المركزية؛ التلقائي 1
  • "memory": بالميغابايت؛ 250 تلقائيًا
  • "local_test": عدد الاختبارات المحلية: الاختبار التلقائي 1

إذا تم ضبط هذه المعلّمة على None أو إذا كانت --experimental_action_resource_set خطأ، سيتم استخدام القيم التلقائية.

يجب أن يكون معاودة الاتصال من المستوى الأعلى (لا يُسمح باستخدام دالة lambda أو الدوال المتداخلة).

تنفيذ_الواجهة

None actions.run_shell(outputs, inputs=[], tools=unbound, arguments=[], mnemonic=None, command, progress_message=None, use_default_shell_env=False, env=None, execution_requirements=None, input_manifests=None, exec_group=None, shadowed_action=None, resource_set=None)

تنشئ إجراءً يشغّل أمر أوامر. راجع مثال الاستخدام.

المَعلمات

المعلمة الوصف
outputs sequence of Files، مطلوبة
قائمة بملفات إخراج الإجراء
inputs sequence of Files; or depset؛ default = []
قائمة ملفات الإدخال أو إلغاء ضبطها.
tools sequence of Files; or depset; default = غير مقيّد
قائمة بالأدوات التي يحتاج إليها الإجراء أو إلغاء ترتيبها. الأدوات هي مدخلات تتضمن ملفات تشغيل إضافية تتم إتاحتها تلقائيًا للإجراء. يمكن أن تحتوي القائمة على مثيلات Files أو FilesToRunProvider.
arguments sequence; default = []
وسيطات سطر الأوامر في الإجراء يجب أن تكون قائمة بسلاسل أو كائنات actions.args().

يمرِّر Bazel العناصر في هذه السمة كوسيطات إلى الأمر.يمكن للأمر الوصول إلى هذه الوسيطات باستخدام بدائل متغيّرات Shell مثل $1 و$2 وما إلى ذلك. تجدر الإشارة إلى أنه بما أنّ العناصر في الوسيط مسطحة قبل الفهرسة، إذا كان هناك كائن الوسيطات بحجم غير معروف، ستكون جميع السلاسل اللاحقة في فهارس غير متوقعة. قد يكون من المفيد استخدام $@ (لاسترداد كل الوسيطات) مع كائنات الوسيطات ذات الحجم غير المحدد.

في حال كان command هو قائمة من السلاسل، لا يمكن استخدام هذه المعلّمة.

mnemonic string; or None; default = None
وصف للإجراء مكوَّن من كلمة واحدة، مثل CppCompile أو GoLink.
command string; or sequence of strings، يجب إدخال
أمر Shell لتنفيذه. قد يكون إما سلسلة (مفضّلة) أو تسلسل من السلاسل (متوقّف).

إذا كانت السمة command سلسلة، يتم تنفيذها كما لو كانت باللغة sh -c <command> "" <arguments>، أي أنّ العناصر في arguments متوفّرة للأمر $1، $2 (أو %1، %2 في حال استخدام مجموعة Windows)، وما إلى ذلك. وإذا كانت arguments تحتوي على أي كائنات actions.args()، يتم إلحاق محتوياتها واحدًا تلو الآخر بسطر الأمر، لذا $i يمكن أن يشير إلى سلاسل فردية ضمن كائن الوسيطات. تجدر الإشارة إلى أنه إذا تم تمرير كائن وسيطات بحجم غير معروف كجزء من arguments، ستكون السلاسل في فهارس غير معروفة، وفي هذه الحالة قد يكون استبدال واجهة برمجة التطبيقات $@ (استرداد جميع الوسيطات) مفيدًا.

(متوقف) إذا كان command تسلسلاً، يكون العنصر الأول هو الملف التنفيذي للتنفيذ والعناصر المتبقية هي وسيطاتها. في حال استخدام هذا النموذج، يجب عدم توفير المعلمة arguments. ملاحظة: تم إيقاف هذا النموذج وستتم إزالته قريبًا. تم إيقاف السياسة باستخدام `--incompatible_run_shell_command_string`. استخدِم هذه العلامة للتحقّق من توافق الرمز.

يستخدم Bazel واجهة الأوامر نفسها لتنفيذ الأمر كما هو الحال مع genrule.

progress_message string; or None; default = None
رسالة مستوى التقدّم التي سيتم عرضها للمستخدم خلال عملية الإنشاء، على سبيل المثال، "Compiling foo.cc لإنشاء foo.o" قد تحتوي الرسالة على أنماط %{label} أو %{input} أو %{output}، والتي يتم استبدالها بسلسلة تصنيف، أو الإدخال الأول، أو مسار الإخراج، على التوالي. أفضِّل استخدام الأنماط بدلاً من السلاسل الثابتة، لأنها السابقة أكثر فعالية.
use_default_shell_env default = False
ما إذا كان يجب أن يستخدم الإجراء البيئة المضمَّنة أم لا.
env dict; or None، default = None
لضبط قاموس متغيّرات البيئة.
execution_requirements dict; or None؛ default = None
معلومات لجدولة الإجراء. اطّلِع على العلامات للتعرّف على المفاتيح المفيدة.
input_manifests sequence; or None; default = None
(ميزة تجريبية) تضبط البيانات الوصفية لتشغيل ملفات الإدخال، وعادةً ما يتم إنشاؤها من خلال order_command.
exec_group string; or None; default = None
يشغّل الإجراء على منصة تنفيذ exec group's. إذا لم يكن الأمر كذلك، يتم استخدام النظام الأساسي التلقائي للتنفيذ "الهدف".
shadowed_action Action; default = None
يتم تنفيذ الإجراء باستخدام الإجراء المُحدَّد المظلل والمحدّد الذي تم اكتشافه والمُضاف إلى قائمة إدخالات 's. إذا لم يكن الأمر كذلك، يتم استخدام إدخالات الإجراءات فقط.
resource_set callable; or None; default = None
دالة رد اتصال لتقدير استخدام الموارد في حال تشغيلها محليًا. يُرجى الاطّلاع على ctx.actions.run().

None actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)

تنشئ إجراءً لكتابة رابط رمزي في نظام الملفات.

يجب استدعاء هذه الدالة باستخدام عنصر واحد بالضبط من target_file أو target_path محدّد.

إذا تم استخدام target_file، يجب إعلان output من خلال declare_file() أو declare_directory() وأن يتطابق مع نوع target_file. في هذه الحالة، سيكون output رابطًا رمزيًا يكون المحتوى الخاص به هو مسار target_file.

وإذا لم يتم استخدام target_path، يجب تحديد output باستخدام declare_symlink(). وفي هذه الحالة، سيكون output رابطًا رمزيًا للمحتوى الخاص به.target_path، ويمكن استخدامه لإنشاء رابط رمزي متشابك.

المَعلمات

المعلمة الوصف
output مطلوبة
مخرجات هذا الإجراء
target_file File; or None; default = None
الملف الذي سيشير إليه رابط الإخراج.
target_path string; or None; default = None
(تجريبية) المسار الدقيق الذي سيشير إليه رابط الإخراج. لا يتم تطبيق التسوية أو المعالجة الأخرى. يتطلب الوصول إلى هذه الميزة إعداد --experimental_allow_unresolved_symlinks.
is_executable default = False
يمكن استخدام هذه السمة مع target_file فقط، وليس مع target_path. وفي حال حدوث ذلك، عند تنفيذ الإجراء، يتم التحقّق من مسار target_file' التأكد من أنه قابل للتنفيذ، ويتم الإبلاغ عن خطأ إذا لم يكن كذلك. ولا يعني ضبط السياسة is_executable على "خطأ" أنّ الهدف غير قابل للتنفيذ، وذلك يعني أنّه ما مِن عملية تحقّق.

هذه الميزة غير مفيدة في target_path لأنه قد لا تتوفر روابط رمزية معلّقة في وقت الإصدار.

progress_message string; or None؛ الإعداد التلقائي = بدون
رسالة التقدم التي يتم عرضها للمستخدم أثناء الإصدار.

نموذج_الإملاء

TemplateDict actions.template_dict()

تجريبية: إنّ واجهة برمجة التطبيقات هذه تجريبية وقد يتم تغييرها في أي وقت. يُرجى عدم الاعتماد عليه. قد يتم تفعيل هذا الإعداد على أساس تجريبي من خلال ضبط --+experimental_lazy_template_expansion
تجريبية: لعرض كائن نموذج Didict لتوسيع النموذج الأقل فعالية في الذاكرة.

كتابة

None actions.write(output, content, is_executable=False)

تنشئ إجراء كتابة ملف. عند تنفيذ الإجراء، ستتم كتابة المحتوى المحدد في ملف. ويتم استخدامه لإنشاء ملفات باستخدام المعلومات المتوفّرة في مرحلة التحليل. إذا كان الملف كبيرًا ويحتوي على الكثير من المحتوى الثابت، يمكنك استخدام expand_template.

المَعلمات

المعلمة الوصف
output مطلوبة
ملف الإخراج
content string; or Args، مطلوبة
محتوى الملف قد تكون سلسلة أو عنصر actions.args().
is_executable default = False
ما إذا كان يجب أن يكون ملف الإخراج قابلاً للتنفيذ أم لا.