قواعد الإجراءات الإضافية

القواعد

action_listener

action_listener(name, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, extra_actions, features, licenses, mnemonics, restricted_to, tags, target_compatible_with, testonly, visibility)

تحذير: تم إيقاف الإجراءات الإضافية. استخدِم العرض بدلاً من ذلك.

لا ينتج عن قاعدة action_listener أي نتائج بحد ذاتها. وبدلاً من ذلك، تسمح لمطوّري الأدوات بإدراج extra_action في نظام الإصدار، من خلال توفير تعيين من الإجراء إلى extra_action

تربط وسيطات هذه القاعدة دُفعات الإجراء بقواعد extra_action.

من خلال تحديد الخيار --experimental_action_listener=<label>، سيستخدِم الإصدار action_listener المحدّد لإدراج extra_action في الرسم البياني للتصميم.

مثال

action_listener(
    name = "index_all_languages",
    mnemonics = [
        "Javac",
        "CppCompile",
        "Python",
    ],
    extra_actions = [":indexer"],
)

action_listener(
    name = "index_java",
    mnemonics = ["Javac"],
    extra_actions = [":indexer"],
)

extra_action(
    name = "indexer",
    tools = ["//my/tools:indexer"],
    cmd = "$(location //my/tools:indexer)" +
          "--extra_action_file=$(EXTRA_ACTION_FILE)",
)

الوسيطات

السمات
name

Name; required

اسم فريد لهذا الهدف.

extra_actions

List of labels; required

يجب أن تضيف قائمة extra_action الأهداف action_listener هذه إلى الرسم البياني للإصدار. مثال: [ "//my/tools:analyzer" ]
mnemonics

List of strings; required

قائمة بتذكيرات الإجراء التي يجب أن يستمع إليها action_listener، مثل [ "Javac" ].

وتجدر الإشارة إلى أن وسائل الاستعاضة ليست واجهة عامة. وما مِن ضمان بأنّ هذه الأساليب والإجراءات لا تتغير.

إضافي_الإجراء

extra_action(name, data, cmd, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, out_templates, requires_action_output, restricted_to, tags, target_compatible_with, testonly, toolchains, tools, visibility)

تحذير: تم إيقاف الإجراءات الإضافية. استخدِم العرض بدلاً من ذلك.

لا ينتج عن قاعدة extra_action أي نتائج مفيدة عند تحديدها كهدف إصدار عادي. وبدلاً من ذلك، تسمح هذه الأداة لمطوّري الأدوات بإدراج إجراءات إضافية في الرسم البياني للإصدار الذي يتعارض مع الإجراءات الحالية.

راجِع action_listener للحصول على تفاصيل عن كيفية تفعيل extra_action.

يتم تشغيل extra_action كسطر أوامر. تحصل أداة سطر الأوامر على إمكانية الوصول إلى ملف يحتوي على مخزن مؤقت للبروتوكولات مثل $(EXTRA_ACTION_FILE) يتضمن معلومات تفصيلية عن الإجراء الأصلي الذي يغطيه. ويمكن لهذا التطبيق أيضًا الوصول إلى جميع ملفات الإدخال التي يمكن للإجراء الأصلي الوصول إليها. يُرجى الاطِّلاع على extra_actions_base.proto للحصول على تفاصيل عن البيانات المُخزَّنة داخل المخزن المؤقت للبروتوكولات. يحتوي كل ملف أولي على رسالة ExtraActionInfo.

كما هو الحال مع جميع الإجراءات الأخرى، يتم تنفيذ الإجراءات الإضافية في وضع الحماية، ويجب تصميمها للتعامل مع ذلك.

الوسيطات

السمات
name

Name; required

اسم فريد لهذا الهدف.

يمكنك الإشارة إلى هذه القاعدة من خلال label في الوسيطة extra_actions من قواعد action_listener.
cmd

String; required

الأمر الذي سيتم تشغيله.

مثل genrule cmd التي تتضمن الاختلافات التالية:

  1. لا يتوفّر توسيع للتصنيف الموجّه. لا يتم توسيع سوى التصنيفات التي تستخدم $(location ...).

  2. يتم تطبيق تمرير إضافي على السلسلة لاستبدال جميع مواضع الإخراج الناتجة من السمة out_templates. تم استبدال جميع مواضع ورود $(output out_template) بمسار الملف الذي يرمز إليه label.

    يمكن أن يتطابق مثال $(ACTION_ID).analysis out_template مع النموذج $(output $(ACTION_ID).analysis).

    في الواقع، هذا هو الاستبدال نفسه في $(location) ولكن مع نطاق مختلف.

out_templates

List of strings; optional

قائمة بنماذج الملفات التي تم إنشاؤها باستخدام الأمر extra_action

يمكن أن يستخدم النموذج المتغيرات التالية:

  • $(ACTION_ID)، معرّف يحدّد عنصر extra_action هذا بشكلٍ فريد. يُستخدَم لإنشاء ملف إخراج فريد.

requires_action_output

Boolean; optional; default is False

تشير إلى أنّ الخاصية extra_action تتطلّب إخراج الإجراء الأصلي كإدخال في رمز extra_action هذا.

عند الضبط على true (خطأ تلقائي)، يمكن أن يفترض additional_action أنّ مخرجات الإجراءات الأصلية تكون متاحة كجزء من الإدخالات.

tools

List of labels; optional

وهي قائمة اعتماديات tool لهذه القاعدة.

يُرجى الاطّلاع على تعريف العناصر التابعة لمزيد من المعلومات.

يضمن نظام الإصدار إنشاء هذه المتطلبات الأساسية قبل تشغيل الأمر extra_action. يتم تصميمها باستخدام hostالضبط، لأنه يجب تشغيلها كأداة أثناء عملية الإنشاء نفسها. يمكن الحصول على مسار استهداف tools الفردي //x:y باستخدام $(location //x:y).

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