Aturan Tindakan Tambahan

Laporkan masalah Lihat sumber

Aturan

action_pemroses

Lihat sumber aturan
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)

PERINGATAN: Tindakan tambahan tidak digunakan lagi. Gunakan aspek sebagai gantinya.

Aturan action_listener tidak menghasilkan output itu sendiri. Sebaliknya, alat ini memungkinkan developer alat menyisipkan extra_action ke dalam sistem build, dengan menyediakan pemetaan dari tindakan ke extra_action .

Argumen aturan ini memetakan mnemonik tindakan ke aturan extra_action.

Dengan menentukan opsi --experimental_action_listener=<label>, build akan menggunakan action_listener yang ditentukan untuk menyisipkan extra_action ke dalam grafik build.

Contoh

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)",
)

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

extra_actions

List of labels; required

Daftar extra_action target yang harus ditambahkan action_listener ini ke grafik build. Misalnya, [ "//my/tools:analyzer" ].
mnemonics

List of strings; required

Daftar mnemonik tindakan yang harus diproses oleh action_listener ini, mis., [ "Javac" ].

Mnemonik bukanlah antarmuka publik. Tidak ada jaminan bahwa mnemonik dan tindakannya tidak berubah.

tindakan_tambahan

Lihat sumber aturan
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)

PERINGATAN: Tindakan tambahan tidak digunakan lagi. Gunakan aspek sebagai gantinya.

Aturan extra_action tidak menghasilkan output yang bermakna jika ditentukan sebagai target build reguler. Sebagai gantinya, alat ini memungkinkan developer alat menyisipkan tindakan tambahan ke dalam grafik build yang membayangi tindakan yang ada.

Lihat action_listener untuk mengetahui detail tentang cara mengaktifkan extra_action.

extra_action berjalan sebagai command line. Alat command line mendapatkan akses ke file yang berisi buffering protokol sebagai $(EXTRA_ACTION_FILE) dengan informasi mendetail tentang tindakan asli yang dibayangi. Class ini juga memiliki akses ke semua file input yang dapat diakses oleh tindakan asli. Lihat extra_actions_base.proto untuk mengetahui detail tentang data yang disimpan di dalam buffering protokol. Setiap file proto berisi pesan ExtraActionInfo.

Sama seperti semua tindakan lainnya, tindakan tambahan di-sandbox, dan harus didesain untuk menanganinya.

Argumen

Atribut
name

Name; required

Nama unik untuk target ini.

Anda dapat merujuk ke aturan ini dengan label dalam argumen extra_actions aturan action_listener.
cmd

String; required

Perintah yang akan dijalankan.

Seperti atribut cmd aturan dengan perbedaan berikut:

  1. Tidak ada perluasan label heuristik. Hanya label yang menggunakan $(lokasi ...) yang diluaskan.

  2. Kartu tambahan diterapkan ke string untuk menggantikan semua kemunculan output yang dibuat dari atribut out_templates. Semua kemunculan $(output out_template) akan diganti dengan jalur ke file yang ditunjukkan dengan label.

    Misalnya, out_template $(ACTION_ID).analysis dapat dicocokkan dengan $(output $(ACTION_ID).analysis).

    Akibatnya, substitusi ini sama dengan $(location) tetapi dengan cakupan yang berbeda.

out_templates

List of strings; optional

Daftar template untuk file yang dihasilkan oleh perintah extra_action.

Template dapat menggunakan variabel berikut:

  • $(ACTION_ID), ID yang mengidentifikasi extra_action ini secara unik. Digunakan untuk menghasilkan file output unik.

requires_action_output

Boolean; optional; default is False

Mengindikasikan bahwa extra_action memerlukan output tindakan asli sebagai input ke extra_action ini.

Jika true (salah default), tindakan ini dapat mengasumsikan bahwa output tindakan asli tersedia sebagai bagian dari inputnya.

tools

List of labels; optional

Daftar dependensi tool untuk aturan ini.

Lihat definisi dependensi untuk mengetahui informasi selengkapnya.

Sistem build memastikan prasyarat ini di-build sebelum menjalankan perintah extra_action; prasyarat dibuat menggunakan execkonfigurasi, karena harus berjalan sebagai alat selama build itu sendiri. Jalur //x:y target tools individual dapat diperoleh menggunakan $(location //x:y).

Semua alat dan dependensi datanya digabungkan menjadi satu hierarki tempat perintah dapat menggunakan jalur relatif. Direktori yang berfungsi akan menjadi root hierarki terpadu tersebut.