नियम
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)
चेतावनी: अतिरिक्त कार्रवाइयों की सुविधा बंद कर दी गई है. इसके बजाय, aspects का इस्तेमाल करें.
  action_listener नियम से कोई आउटपुट नहीं मिलता.
  इसके बजाय, यह टूल डेवलपर को बिल्ड सिस्टम में extra_action डालने की अनुमति देता है. इसके लिए, कार्रवाई से extra_action
   तक मैपिंग की सुविधा उपलब्ध कराई जाती है.
  इस नियम के आर्ग्युमेंट, कार्रवाई के लिए इस्तेमाल होने वाले निमोनिक को extra_action नियमों से मैप करते हैं.
  
  --experimental_action_listener=<label> विकल्प चुनने पर, बिल्ड, action_listener का इस्तेमाल करके बिल्ड ग्राफ़ में extra_actions डालेगा.
उदाहरण
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 | नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम. | 
| extra_actions | लेबल की सूची; ज़रूरी है extra_actionटारगेट की सूची
        इसaction_listenerको बिल्ड ग्राफ़ में जोड़ना चाहिए.
        उदाहरण के लिए,[ "//my/tools:analyzer" ]. | 
| mnemonics | स्ट्रिंग की सूची; ज़रूरी हैकार्रवाइयों के लिए इस्तेमाल होने वाले निमोनिक की सूची. action_listenerको इन निमोनिक के लिए सुनना चाहिए. उदाहरण के लिए,[ "Javac" ].निमोनिक, सार्वजनिक इंटरफ़ेस नहीं हैं. इस बात की कोई गारंटी नहीं है कि निमोनिक और उनसे जुड़ी कार्रवाइयों में बदलाव नहीं होगा. | 
extra_action
नियम का सोर्स देखें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)
चेतावनी: अतिरिक्त कार्रवाइयों की सुविधा बंद कर दी गई है. इसके बजाय, aspects का इस्तेमाल करें.
  रेगुलर बिल्ड टारगेट के तौर पर तय किए जाने पर, extra_action नियम से कोई काम का आउटपुट नहीं मिलता. इसके बजाय, यह टूल डेवलपर को बिल्ड ग्राफ़ में अतिरिक्त कार्रवाइयां डालने की अनुमति देता है. ये कार्रवाइयां, मौजूदा कार्रवाइयों की तरह ही होती हैं.
  extra_action चालू करने के तरीके के बारे में ज़्यादा जानने के लिए, action_listener देखें.
  extra_action, कमांड-लाइन के तौर पर काम करते हैं. कमांड-लाइन टूल को, प्रोटोकॉल बफ़र वाली फ़ाइल का ऐक्सेस मिलता है. यह फ़ाइल, $(EXTRA_ACTION_FILE) के तौर पर उपलब्ध होती है. इसमें ओरिजनल ऐक्शन के बारे में पूरी जानकारी होती है.
  इसके पास उन सभी इनपुट फ़ाइलों का ऐक्सेस भी होता है जिन्हें ओरिजनल कार्रवाई ऐक्सेस कर सकती है.
  प्रोटोकॉल बफ़र में सेव किए गए डेटा के बारे में ज़्यादा जानने के लिए, extra_actions_base.proto देखें. हर प्रोटो फ़ाइल में ExtraActionInfo मैसेज होता है.
अन्य सभी कार्रवाइयों की तरह, अतिरिक्त कार्रवाइयों को भी सैंडबॉक्स किया जाता है. इसलिए, इन्हें इस तरह से डिज़ाइन किया जाना चाहिए कि ये सैंडबॉक्स को मैनेज कर सकें.
तर्क
| विशेषताएं | |
|---|---|
| name | नाम; ज़रूरी है इस टारगेट के लिए यूनीक नाम.  action_listenerनियमों केextra_actionsआर्ग्युमेंट में, इस नियम कोlabelके तौर पर इस्तेमाल किया जा सकता है. | 
| cmd | स्ट्रिंग; ज़रूरी हैचलाने के लिए कमांड. जैसे, genrule cmd एट्रिब्यूट में ये अंतर हैं: 
 | 
| out_templates | स्ट्रिंग की सूची; डिफ़ॉल्ट वैल्यू  extra_actionकमांड से जनरेट की गई फ़ाइलों के लिए टेंप्लेट की सूची.टेंप्लेट में इन वैरिएबल का इस्तेमाल किया जा सकता है: 
 | 
| requires_action_output | बूलियन; डिफ़ॉल्ट वैल्यू  extra_actionके लिए, ओरिजनल कार्रवाई के आउटपुट को इनपुट के तौर पर इस्तेमाल करना ज़रूरी है.extra_actionअगर इसे 'सही है' पर सेट किया जाता है (डिफ़ॉल्ट तौर पर 'बंद है' पर सेट होता है), तो extra_action यह मान सकता है कि ओरिजनल ऐक्शन के आउटपुट, इसके इनपुट के तौर पर उपलब्ध हैं. | 
| tools | लेबल की सूची; डिफ़ॉल्ट वैल्यू  toolडिपेंडेंसी की सूची.ज़्यादा जानकारी के लिए, डिपेंडेंसी की परिभाषा देखें. 
          बिल्ड सिस्टम यह पक्का करता है कि  सभी टूल और उनके डेटा डिपेंडेंसी को एक ही ट्री में शामिल किया जाता है. इसमें कमांड, रिलेटिव पाथ का इस्तेमाल कर सकती है. वर्किंग डायरेक्ट्री, यूनिफ़ाइड ट्री का रूट होगी. |