lewati

Objek konteks yang diteruskan ke fungsi penerapan untuk aturan atau aspek. Objek ini memberikan akses ke informasi dan metode yang diperlukan untuk menganalisis target saat ini.

Secara khusus, fungsi ini memungkinkan fungsi implementasi mengakses label, atribut, konfigurasi, dan penyedia dependensinya saat ini. Objek ini memiliki metode untuk mendeklarasikan file output dan tindakan yang menghasilkannya.

Objek konteks pada dasarnya aktif selama durasi panggilan ke fungsi penerapan. Objek ini tidak berguna jika diakses di luar fungsi terkaitnya. Lihat halaman Aturan untuk mengetahui informasi selengkapnya.

Anggota

tindakan

actions ctx.actions

Berisi metode untuk mendeklarasikan file output dan tindakan yang menghasilkannya.

aspect_ids

list ctx.aspect_ids

Daftar ID untuk semua aspek yang diterapkan ke target. Hanya tersedia di fungsi penerapan aspek.

attr

struct ctx.attr

Struktur untuk mengakses nilai atribut. Nilai diberikan oleh pengguna (jika tidak, nilai default akan digunakan). Atribut struct dan jenis nilainya sesuai dengan kunci dan nilai dict attrs yang diberikan ke fungsi rule. Lihat contoh penggunaan.

bin_dir

root ctx.bin_dir

Root yang sesuai dengan direktori bin.

build_file_path

string ctx.build_file_path

Tidak digunakan lagi: Gunakan ctx.label.package + '/BUILD'. Jalur ke file BUILD untuk aturan ini, relatif terhadap root sumber.

build_setting_value

unknown ctx.build_setting_value

Nilai setelan build yang diwakili oleh target saat ini. Jika ini bukan konteks untuk instance aturan yang menetapkan atribut build_setting, membaca ini adalah error.

konfigurasi

configuration ctx.configuration

Konfigurasi build target saat ini. Lihat jenis konfigurasi Starlark dan dokumentasi konfigurasi untuk mengetahui detail selengkapnya.

coverage_instrumented

bool ctx.coverage_instrumented(target=None)

Menampilkan apakah instrumentasi cakupan kode harus dibuat saat melakukan tindakan kompilasi untuk aturan ini atau, jika target diberikan, aturan yang ditentukan oleh Target tersebut. (Jika Target aturan non-rule atau Starlark diberikan, fungsi ini akan menampilkan False.) Memeriksa apakah sumber aturan saat ini (jika tidak ada Target yang diberikan) atau sumber Target harus diinstrumentasi berdasarkan setelan konfigurasi --instrumentation_filter dan --instrument_test_targets. Hal ini berbeda dengan coverage_enabled dalam konfigurasi, yang mencatat apakah pengumpulan data cakupan diaktifkan untuk seluruh proses, tetapi tidak mencatat apakah target tertentu harus diinstrumentasi.

Parameter

Parameter Deskripsi
target Target; atau None; defaultnya adalah None
Target yang menentukan aturan. Jika tidak diberikan, defaultnya adalah aturan saat ini.

created_actions

StarlarkValue ctx.created_actions()

Untuk aturan dengan _skylark_testable yang ditetapkan ke True, ini akan menampilkan penyedia Actions yang merepresentasikan semua tindakan yang dibuat sejauh ini untuk aturan saat ini. Untuk semua aturan lainnya, menampilkan None. Perhatikan bahwa penyedia tidak diperbarui saat tindakan berikutnya dibuat, jadi Anda harus memanggil fungsi ini lagi jika ingin memeriksanya.

Tindakan ini dimaksudkan untuk membantu menulis pengujian untuk fungsi bantuan penerapan aturan, yang dapat mengambil objek ctx dan membuat tindakan di dalamnya.

disabled_features

list ctx.disabled_features

Kumpulan fitur yang dinonaktifkan secara eksplisit oleh pengguna untuk aturan ini.

exec_groups

ExecGroupCollection ctx.exec_groups

Kumpulan grup eksekusi yang tersedia untuk aturan ini, yang diindeks berdasarkan namanya. Akses dengan ctx.exec_groups[name_of_group].

dapat dieksekusi

struct ctx.executable

struct yang berisi file yang dapat dieksekusi yang ditentukan dalam atribut jenis label yang ditandai sebagai executable=True. Kolom struct sesuai dengan nama atribut. Setiap nilai dalam struct adalah File atau None. Jika atribut opsional tidak ditentukan dalam aturan, nilai struct yang sesuai adalah None. Jika jenis label tidak ditandai sebagai executable=True, tidak ada kolom struct yang sesuai yang dibuat. Lihat contoh penggunaan.

expand_location

string ctx.expand_location(input, targets=[])

Memperluas semua template $(location ...) dalam string yang diberikan dengan mengganti $(location //x) dengan jalur file output target //x. Perluasan hanya berfungsi untuk label yang mengarah ke dependensi langsung aturan ini atau yang tercantum secara eksplisit dalam argumen opsional targets.

$(location ...) akan menyebabkan error jika target yang dirujuk memiliki beberapa output. Dalam hal ini, gunakan $(locations ...) karena menghasilkan daftar jalur output yang dipisahkan spasi. Fungsi ini juga dapat digunakan dengan aman untuk satu file output.

Fungsi ini berguna untuk memungkinkan pengguna menentukan perintah dalam file BUILD (seperti untuk genrule). Dalam kasus lain, sering kali lebih baik memanipulasi label secara langsung.

Parameter

Parameter Deskripsi
input string; wajib
String yang akan diperluas.
targets sequence dari Target; default adalah []
Daftar target untuk informasi pencarian tambahan. Target ini diperluas sebagai berikut: Target dengan satu file di DefaultInfo.files diperluas ke file tersebut. Target lain diperluas ke file DefaultInfo.executable jika disetel dan jika --incompatible_locations_prefers_executable diaktifkan, atau diperluas ke DefaultInfo.files.
Dapat menampilkan None.

expand_make_variables

string ctx.expand_make_variables(attribute_name, command, additional_substitutions)

Tidak digunakan lagi. Gunakan ctx.var untuk mengakses variabel.
Mengembalikan string setelah memperluas semua referensi ke "Buat variabel". Variabel harus memiliki format berikut: $(VAR_NAME). Selain itu, $$VAR_NAME expands to $VAR_NAME. Examples:
ctx.expand_make_variables("cmd", "$(MY_VAR)", {"MY_VAR": "Hi"})  # == "Hi"
ctx.expand_make_variables("cmd", "$$PWD", {})  # == "$PWD"
Additional variables may come from other places, such as configurations. Note that this function is experimental.
                  
      

Parameters

Parameter Description
attribute_name string; required
The attribute name. Used for error reporting.
command string; required
The expression to expand. It can contain references to "Make variables".
additional_substitutions dict; required
Additional substitutions to make beyond the default make variables.

features

list ctx.features

The set of features that are explicitly enabled by the user for this rule. See example of use.

file

struct ctx.file

A struct containing files defined in label type attributes marked as allow_single_file. The struct fields correspond to the attribute names. The struct value is always a File or None. If an optional attribute is not specified in the rule then the corresponding struct value is None. If a label type is not marked as allow_single_file, no corresponding struct field is generated. It is a shortcut for:
list(ctx.attr.<ATTR>.files)[0]
In other words, use file to access the (singular) default output of a dependency. See example of use.

files

struct ctx.files

A struct containing files defined in label or label list type attributes. The struct fields correspond to the attribute names. The struct values are list of Files. It is a shortcut for:
[f for t in ctx.attr.<ATTR> for f in t.files]
In other words, use files to access the default outputs of a dependency. See example of use.

fragments

fragments ctx.fragments

Allows access to configuration fragments in target configuration.

genfiles_dir

root ctx.genfiles_dir

The root corresponding to genfiles directory.

info_file

File ctx.info_file

The file that is used to hold the non-volatile workspace status for the current build request. See documentation for --workspace_status_command for more information.

label

Label ctx.label

The label of the target currently being analyzed.

outputs

structure ctx.outputs

A pseudo-struct containing all the predeclared output files, represented by File objects. See the Rules page for more information and examples.

This field does not exist on aspect contexts, since aspects do not have predeclared outputs.

The fields of this object are defined as follows. It is an error if two outputs produce the same field name or have the same label.

  • If the rule declares an outputs dict, then for every entry in the dict, there is a field whose name is the key and whose value is the corresponding File.
  • For every attribute of type attr.output that the rule declares, there is a field whose name is the attribute's name. If the target specified a label for that attribute, then the field value is the corresponding File; otherwise the field value is None.
  • For every attribute of type attr.output_list that the rule declares, there is a field whose name is the attribute's name. The field value is a list of File objects corresponding to the labels given for that attribute in the target, or an empty list if the attribute was not specified in the target.
  • (Deprecated) If the rule is marked executable or test, there is a field named "executable", which is the default executable. It is recommended that instead of using this, you pass another file (either predeclared or not) to the executable arg of DefaultInfo.

package_relative_label

Label ctx.package_relative_label(input)

Converts the input string into a Label object, in the context of the package of the target currently being analyzed. If the input is already a Label, it is returned unchanged.

The result of this function is the same Label value as would be produced by passing the given string to a label-valued attribute of the rule and accessing the corresponding Label() adalah bahwa Label() menggunakan konteks paket file .bzl yang memanggilnya, bukan paket target yang saat ini sedang dianalisis. Fungsi ini memiliki perilaku yang sama dengan native.package_relative_label(), yang tidak dapat digunakan dalam aturan atau fungsi penerapan aspek.

Parameter

Parameter Deskripsi
input string; atau Label; wajib
String label input atau objek Label. Jika objek Label diteruskan, objek tersebut akan ditampilkan apa adanya.

resolve_command

tuple ctx.resolve_command(*, command='', attribute=None, expand_locations=False, make_variables=None, tools=[], label_dict={}, execution_requirements={})

(Eksperimental) Menampilkan tuple (inputs, command, empty list) dari daftar input yang telah diselesaikan dan daftar argv untuk perintah yang telah diselesaikan, yang keduanya cocok untuk diteruskan sebagai argumen bernama sama dari metode ctx.action.
Catatan untuk pengguna Windows: metode ini memerlukan Bash (MSYS2). Sebaiknya gunakan resolve_tools() (jika sesuai dengan kebutuhan Anda). Daftar kosong ditampilkan sebagai anggota ketiga tuple untuk kompatibilitas mundur.

Parameter

Parameter Deskripsi
command string; defaultnya adalah ''
Perintah yang akan diselesaikan.
attribute string; atau None; default adalah None
Nama atribut terkait yang akan mengeluarkan error, atau None.
expand_locations bool; default is False
Haruskah kita memperluas variabel $(location)? Lihat ctx.expand_location() untuk mengetahui detail selengkapnya.
make_variables dict; atau None; default adalah None
Buat variabel untuk diperluas, atau None.
tools sequence dari Target; default adalah []
Daftar alat (daftar target).
label_dict dict; default adalah {}
Dictionary label yang telah diselesaikan dan daftar File yang sesuai (dict Label : daftar File).
execution_requirements dict; default adalah {}
Informasi untuk menjadwalkan tindakan guna menyelesaikan perintah ini. Lihat tag untuk kunci yang berguna.

resolve_tools

tuple ctx.resolve_tools(*, tools=[])

Menampilkan tuple (inputs, empty list) dari depset input yang telah di-resolve yang diperlukan untuk menjalankan alat, yang cocok untuk diteruskan sebagai argumen bernama sama dari metode ctx.actions.run dan ctx.actions.run_shell.

Berbeda dengan ctx.resolve_command, metode ini tidak mengharuskan Bash diinstal di komputer, sehingga cocok untuk aturan yang dibuat di Windows. Daftar kosong ditampilkan sebagai bagian dari tuple untuk kompatibilitas mundur.

Parameter

Parameter Deskripsi
tools sequence dari Target; default adalah []
Daftar alat (daftar target).

aturan

rule_attributes ctx.rule

Deskripsi atribut aturan untuk aturan yang diterapkan aspeknya. Hanya tersedia di fungsi penerapan aspek.

runfiles

runfiles ctx.runfiles(files=[], transitive_files=None, collect_data=False, collect_default=False, symlinks={}, root_symlinks={})

Membuat objek runfiles.

Parameter

Parameter Deskripsi
files urutan File; default adalah []
Daftar file yang akan ditambahkan ke runfile.
transitive_files depset File; atau None; default adalah None
Set file (transitif) yang akan ditambahkan ke runfile. Depset harus menggunakan urutan default (yang, seperti yang tersirat dalam namanya, adalah default).
collect_data bool; default adalah False
Penggunaan parameter ini tidak direkomendasikan. Lihat panduan runfiles.

Apakah akan mengumpulkan file yang dapat dieksekusi data dari dependensi di atribut srcs, data, dan deps.

collect_default bool; default adalah False
Penggunaan parameter ini tidak direkomendasikan. Lihat panduan runfiles.

Apakah akan mengumpulkan file yang dapat dijalankan default dari dependensi dalam atribut srcs, data, dan deps.

dict; atau depset SymlinkEntry; default adalah {}
Baik depset SymlinkEntry maupun peta symlink yang akan ditambahkan ke runfile. Link simbolik selalu ditambahkan di direktori runfiles ruang kerja utama (misalnya, <runfiles_root>/_main/<symlink_path>, bukan direktori yang sesuai dengan repositori target saat ini. Lihat Link simbolis file yang dapat dijalankan dalam panduan aturan.
dict; atau depset SymlinkEntry; default adalah {}
Baik depset SymlinkEntry atau peta symlink yang akan ditambahkan ke runfile. Lihat Link simbolis file yang dapat dijalankan dalam panduan aturan.

split_attr

struct ctx.split_attr

Struktur untuk mengakses nilai atribut dengan konfigurasi terpisah. Jika atribut adalah daftar label, nilai split_attr adalah dict kunci pemisahan (sebagai string) ke daftar ConfiguredTarget di cabang pemisahan tersebut. Jika atribut adalah label, nilai split_attr adalah dict dari kunci pemisahan (sebagai string) ke ConfiguredTarget tunggal. Atribut dengan konfigurasi terpisah masih muncul di struct attr, tetapi nilainya akan berupa daftar tunggal dengan semua cabang pemisahan digabungkan.

super

unknown ctx.super()

Eksperimental: Memanggil fungsi penerapan induk dan menampilkan penyedianya

target_platform_has_constraint

bool ctx.target_platform_has_constraint(constraintValue)

Menampilkan nilai benar (true) jika nilai batasan yang diberikan adalah bagian dari platform target saat ini.

Parameter

Parameter Deskripsi
constraintValue ConstraintValueInfo; wajib diisi
Nilai batasan untuk memeriksa platform target.

toolchain

ToolchainContext ctx.toolchains

Toolchain untuk grup eksekusi default aturan ini.

var

dict ctx.var

Dictionary (String ke String) variabel konfigurasi.

version_file

File ctx.version_file

File yang digunakan untuk menyimpan status ruang kerja yang tidak stabil untuk permintaan build saat ini. Lihat dokumentasi untuk --workspace_status_command untuk mengetahui informasi selengkapnya.

workspace_name

string ctx.workspace_name

Nama ruang kerja, yang secara efektif merupakan nama root eksekusi dan awalan runfile untuk repo utama. Jika --enable_bzlmod aktif, ini adalah string tetap _main. Jika tidak, ini adalah nama ruang kerja seperti yang ditentukan dalam file WORKSPACE.