ctx.actions
.
Anggota
- args
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- run
- run_shell
- symlink
- template_dict
- tulis
args
Args actions.args()Menampilkan objek Args yang dapat digunakan untuk membangun command line yang hemat memori.
declare_directory
File actions.declare_directory(filename, *, sibling=None)Mendeklarasikan bahwa aturan atau aspek membuat direktori dengan nama yang diberikan, dalam paket saat ini. Anda harus membuat tindakan yang menghasilkan direktori tersebut. Konten direktori tidak dapat diakses secara langsung dari Starlark, tetapi dapat diperluas dalam perintah tindakan dengan
Args.add_all()
.
Parameter
Parameter | Deskripsi |
---|---|
filename
|
required Jika tidak ada 'saudara' yang disediakan, jalur direktori baru, relatif terhadap paket saat ini. Jika tidak, nama dasar untuk file ('saudara' mendefinisikan direktori). |
sibling
|
File; or None ;
default = NoneFile yang berada di direktori yang sama dengan direktori yang baru dideklarasikan. File tersebut harus ada dalam paket saat ini. |
declare_file
File actions.declare_file(filename, *, sibling=None)Mendeklarasikan bahwa aturan atau aspek membuat file dengan nama file yang diberikan. Jika
sibling
tidak ditentukan, nama file akan relatif terhadap direktori paket. Jika tidak, file akan berada di direktori yang sama dengan sibling
. File tidak dapat dibuat di luar paket saat ini.Ingatlah bahwa selain mendeklarasikan file, Anda juga harus membuat tindakan yang memunculkan file secara terpisah. Pembuatan tindakan tersebut akan mengharuskan penerusan objek File
yang ditampilkan ke fungsi konstruksi tindakan.
Perhatikan bahwa file output yang dideklarasikan sebelumnya tidak harus (dan tidak dapat) dideklarasikan menggunakan fungsi ini. Anda bisa mendapatkan objek File
objek tersebut dari ctx.outputs
. Lihat contoh penggunaan.
Parameter
Parameter | Deskripsi |
---|---|
filename
|
diperlukan Jika tidak ada 'saudara' yang disediakan, jalur file baru, relatif terhadap paket saat ini. Jika tidak, nama dasar untuk file ('saudara' akan menentukan direktori). |
sibling
|
File; or None ;
default = NoneFile yang berada di direktori yang sama dengan file yang baru dibuat. File tersebut harus ada dalam paket saat ini. |
declare_symlink
File actions.declare_symlink(filename, *, sibling=None)
Eksperimental. Parameter ini bersifat eksperimental dan dapat berubah setiap saat. Jangan bergantung pada hal itu. Fitur ini dapat diaktifkan secara eksperimental dengan menetapkan --experimental_allow_unresolved_symlinks
Mendeklarasikan bahwa aturan atau aspek membuat symlink dengan nama yang diberikan dalam paket saat ini. Anda harus membuat tindakan yang menghasilkan symlink ini. Bazel tidak akan pernah membatalkan referensi symlink ini dan akan mentransfernya kata demi kata ke sandbox atau eksekutor jarak jauh.
Parameter
Parameter | Deskripsi |
---|---|
filename
|
required Jika tidak ada 'saudara' yang disediakan, jalur symlink baru, relatif terhadap paket saat ini. Jika tidak, nama dasar untuk file ('saudara' mendefinisikan direktori). |
sibling
|
File; or None ;
default = NoneFile yang berada di direktori yang sama dengan symlink yang baru dideklarasikan. |
do_nothing
None actions.do_nothing(mnemonic, inputs=[])Membuat tindakan kosong yang tidak mengeksekusi perintah atau menghasilkan output apa pun, tetapi hal ini berguna untuk menyisipkan 'tindakan tambahan'.
Parameter
Parameter | Deskripsi |
---|---|
mnemonic
|
wajib Deskripsi tindakan satu kata, misalnya, CppCompile atau GoLink. |
inputs
|
sequence of Files; or depset ;
default = []Daftar file input tindakan. |
expand_template
None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)Membuat tindakan perluasan template. Saat dieksekusi, tindakan akan menghasilkan file berdasarkan template. Bagian dari template akan diganti menggunakan kamus
substitutions
, sesuai dengan urutan substitusi yang ditentukan. Setiap kali kunci kamus muncul dalam template (atau hasil dari substitusi sebelumnya), kunci tersebut akan diganti dengan nilai terkait. Tidak ada sintaksis khusus untuk kunci tersebut. Misalnya, Anda dapat menggunakan tanda kurung kurawal untuk menghindari konflik (misalnya {KEY}
). Lihat contoh penggunaan.
Parameter
Parameter | Deskripsi |
---|---|
template
|
wajib File template, yang merupakan file teks berenkode UTF-8. |
output
|
diperlukan File output, yang merupakan file teks berenkode UTF-8. |
substitutions
|
default = {} Substitusi yang akan dibuat saat memperluas template. |
is_executable
|
default = False Apakah file output harus dapat dieksekusi. |
computed_substitutions
|
TemplateDict ;
default = tidak terikatEksperimental. Parameter ini bersifat eksperimental dan dapat berubah setiap saat. Jangan bergantung pada hal itu. Ini dapat diaktifkan secara eksperimental dengan menetapkan --+experimental_lazy_template_expansion Eksperimental: Substitusi yang dilakukan saat memperluas template. |
run
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, toolchain=None)Membuat tindakan yang menjalankan file yang dapat dieksekusi. Lihat contoh penggunaan.
Parameter
Parameter | Deskripsi |
---|---|
outputs
|
sequence of Files ;
wajibDaftar file output tindakan. |
inputs
|
sequence of Files; or depset ;
default = []Daftar atau dependensi file input tindakan. |
unused_inputs_list
|
File; or None ;
default = NoneFile yang berisi daftar input yang tidak digunakan oleh tindakan. Konten file ini (umumnya salah satu output tindakan) sesuai dengan daftar file input yang tidak digunakan selama eksekusi tindakan keseluruhan. Setiap perubahan pada file tersebut tidak boleh memengaruhi output tindakan dengan cara apa pun. |
executable
|
File; or string; or FilesToRunProvider ;
wajibFile yang dapat dieksekusi yang akan dipanggil oleh tindakan. |
tools
|
sequence; or depset ;
default = tidak terikatDaftar atau dependensi alat apa pun yang diperlukan oleh tindakan. Alat adalah input dengan runfile tambahan yang secara otomatis tersedia untuk tindakan. Jika daftar disediakan, daftar tersebut dapat berupa kumpulan Files, instance FilesToRunProvider yang beragam, atau dependensi Files. File yang langsung ada dalam daftar dan berasal dari ctx.executable, runfile-nya akan ditambahkan secara otomatis. Jika disediakan, dependensi hanya boleh berisi File. Dalam kedua kasus tersebut, file dalam dependensi tidak direferensikan silang dengan ctx.executable untuk runfiles. |
arguments
|
sequence ;
default = []Argumen command line tindakan. Harus berupa daftar string atau objek actions.args() .
|
mnemonic
|
string; or None ;
default = Tidak adaDeskripsi tindakan satu kata, misalnya, CppCompile atau GoLink. |
progress_message
|
string; or None ;
default = Tidak adaPesan progres yang akan ditampilkan kepada pengguna selama proses build, misalnya, "Mengompilasi foo.cc untuk membuat foo.o". Pesan dapat berisi pola %{label} , %{input} , atau %{output} , yang masing-masing diganti dengan string label, jalur input pertama, atau output. Memilih untuk menggunakan pola daripada string statis, karena yang pertama lebih efisien.
|
use_default_shell_env
|
default = False Apakah tindakan harus menggunakan lingkungan shell bawaan atau tidak. |
env
|
dict; or None ;
default = NoneMenetapkan kamus variabel lingkungan. |
execution_requirements
|
dict; or None ;
default = Tidak adaInformasi untuk menjadwalkan tindakan. Lihat tag untuk mengetahui kunci yang berguna. |
input_manifests
|
sequence; or None ;
default = None(Eksperimental) menetapkan metadata runfiles input; biasanya dihasilkan oleh resolve_command. |
exec_group
|
string; or None ;
default = NoneMenjalankan tindakan pada platform eksekusi grup eksekutif yang ditentukan. Jika tidak ada, platform eksekusi default target akan digunakan. |
shadowed_action
|
Action ;
default = Tidak adaMenjalankan tindakan menggunakan input dan lingkungan tindakan bayangan tertentu yang ditambahkan ke daftar input dan lingkungan tindakan. Lingkungan tindakan dapat menimpa variabel lingkungan tindakan bayangan. Jika tidak ada, hanya input tindakan dan lingkungan tertentu yang akan digunakan. |
resource_set
|
callable; or None ;
default = NoneFungsi callback yang menampilkan kamus set resource, digunakan untuk memperkirakan penggunaan resource pada waktu eksekusi jika tindakan ini dijalankan secara lokal. Fungsi ini menerima dua argumen posisi: string yang mewakili nama OS (mis. "osx"), dan bilangan bulat yang mewakili jumlah input untuk tindakan. Kamus yang ditampilkan dapat berisi entri berikut, yang masing-masing mungkin berupa float atau int:
Jika parameter ini disetel ke Callback harus tingkat atas (lambda dan fungsi bertingkat tidak diizinkan). |
toolchain
|
Label; or string; or None ;
default = Tidak adaJenis toolchain yang dapat dieksekusi atau alat yang digunakan dalam tindakan ini. Parameter harus ditetapkan sehingga tindakan akan dieksekusi di platform eksekusi yang benar. Saat ini tanpa pengoperasian, tetapi sebaiknya Anda menyetelnya saat toolchain digunakan, karena akan diperlukan dalam rilis Bazel mendatang. Perhatikan bahwa aturan yang membuat tindakan ini perlu menentukan toolchain ini di dalam fungsi 'rule()'-nya. Jika parameter `toolchain` dan `exec_group` ditetapkan, `exec_group` akan digunakan. Error akan muncul jika `exec_group` tidak menentukan hal yang sama. |
run_shell
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, toolchain=None)Membuat tindakan yang menjalankan perintah shell. Lihat contoh penggunaan.
Parameter
Parameter | Deskripsi |
---|---|
outputs
|
sequence of Files ;
wajibDaftar file output tindakan. |
inputs
|
sequence of Files; or depset ;
default = []Daftar atau dependensi file input tindakan. |
tools
|
sequence of Files; or depset ;
default = tidak terikatDaftar atau dependensi alat apa pun yang diperlukan oleh tindakan. Alat adalah input dengan runfile tambahan yang secara otomatis tersedia untuk tindakan. Daftar tersebut dapat berisi instance Files atau FilesToRunProvider. |
arguments
|
sequence ;
default = []Argumen command line tindakan. Harus berupa daftar string atau objek actions.args() .Bazel meneruskan elemen dalam atribut ini sebagai argumen ke perintah.Perintah tersebut dapat mengakses argumen ini menggunakan substitusi variabel shell seperti Jika |
mnemonic
|
string; or None ;
default = Tidak adaDeskripsi tindakan satu kata, misalnya, CppCompile atau GoLink. |
command
|
string; or sequence of strings ;
diperlukanperintah Shell untuk dieksekusi. String ini dapat berupa string (lebih disukai) atau urutan string (tidak digunakan lagi). Jika (Tidak digunakan lagi) Jika Bazel menggunakan shell yang sama untuk menjalankan perintah seperti yang dilakukan untuk genrules. |
progress_message
|
string; or None ;
default = Tidak adaPesan progres yang akan ditampilkan kepada pengguna selama proses build, misalnya, "Mengompilasi foo.cc untuk membuat foo.o". Pesan dapat berisi pola %{label} , %{input} , atau %{output} , yang masing-masing diganti dengan string label, jalur input pertama, atau output. Memilih untuk menggunakan pola daripada string statis, karena yang pertama lebih efisien.
|
use_default_shell_env
|
default = False Apakah tindakan harus menggunakan lingkungan shell bawaan atau tidak. |
env
|
dict; or None ;
default = NoneMenetapkan kamus variabel lingkungan. |
execution_requirements
|
dict; or None ;
default = Tidak adaInformasi untuk menjadwalkan tindakan. Lihat tag untuk mengetahui kunci yang berguna. |
input_manifests
|
sequence; or None ;
default = None(Eksperimental) menetapkan metadata runfiles input; biasanya dihasilkan oleh resolve_command. |
exec_group
|
string; or None ;
default = NoneMenjalankan tindakan pada platform eksekusi grup eksekutif yang ditentukan. Jika tidak ada, platform eksekusi default target akan digunakan. |
shadowed_action
|
Action ;
default = Tidak adaMenjalankan tindakan menggunakan input yang ditemukan untuk tindakan bayangan yang diberikan dan ditambahkan ke daftar input tindakan. Jika tidak ada, hanya input tindakan yang akan digunakan. |
resource_set
|
callable; or None ;
default = NoneFungsi callback untuk memperkirakan penggunaan resource jika dijalankan secara lokal. Lihat ctx.actions.run() .
|
toolchain
|
Label; or string; or None ;
default = Tidak adaJenis toolchain yang dapat dieksekusi atau alat yang digunakan dalam tindakan ini. Parameter harus ditetapkan sehingga tindakan akan dieksekusi di platform eksekusi yang benar. Saat ini tanpa pengoperasian, tetapi sebaiknya Anda menyetelnya saat toolchain digunakan, karena akan diperlukan dalam rilis Bazel mendatang. Perhatikan bahwa aturan yang membuat tindakan ini perlu menentukan toolchain ini di dalam fungsi 'rule()'-nya. Jika parameter `toolchain` dan `exec_group` ditetapkan, `exec_group` akan digunakan. Error akan muncul jika `exec_group` tidak menetapkan toolchain. |
symlink
None actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)Membuat tindakan yang menulis symlink dalam sistem file.
Fungsi ini harus dipanggil dengan tepat salah satu dari target_file
atau target_path
yang ditentukan.
Saat Anda menggunakan target_file
, deklarasikan output
dengan declare_file()
atau declare_directory()
lalu cocokkan jenis target_file
. Tindakan ini akan membuat symlink mengarah ke target_file
. Bazel akan membatalkan output tindakan ini setiap kali target symlink atau kontennya berubah.
Jika tidak, saat Anda menggunakan target_path
, deklarasikan output
dengan declare_symlink()
). Dalam hal ini, symlink mengarah ke target_path
. Bazel tidak pernah menyelesaikan symlink dan output tindakan ini menjadi tidak valid hanya saat konten teks symlink (yaitu, nilai readlink()
) berubah. Secara khusus, hal ini dapat digunakan untuk membuat symlink yang menggantung.
Parameter
Parameter | Deskripsi |
---|---|
output
|
diperlukan Output tindakan ini. |
target_file
|
File; or None ;
default = NoneFile yang akan menjadi tujuan symlink output. |
target_path
|
string; or None ;
default = Tidak ada(Eksperimental) Jalur yang tepat yang akan dituju symlink output. Tidak ada normalisasi atau pemrosesan lainnya yang diterapkan. Akses ke fitur ini memerlukan setelan --experimental_allow_unresolved_symlinks .
|
is_executable
|
default = False Hanya dapat digunakan dengan target_file , bukan target_path . Jika benar, saat tindakan dieksekusi, jalur target_file akan diperiksa untuk mengonfirmasi bahwa tindakan tersebut dapat dieksekusi, dan error akan dilaporkan jika tidak dapat dieksekusi. Menyetel is_executable ke Salah (False) tidak berarti target tidak dapat dieksekusi, hanya saja tidak ada verifikasi yang dilakukan.Fitur ini tidak berfungsi untuk |
progress_message
|
string; or None ;
default = Tidak adaPesan progres yang akan ditampilkan kepada pengguna selama proses build. |
template_dict
TemplateDict actions.template_dict()Eksperimental. API ini bersifat eksperimental dan dapat berubah kapan saja. Jangan bergantung pada hal itu. Fitur ini dapat diaktifkan secara eksperimental dengan menetapkan
--+experimental_lazy_template_expansion
Eksperimental: Menampilkan objek TemplateDict untuk perluasan template yang hemat memori.
write
None actions.write(output, content, is_executable=False)Membuat tindakan tulis file. Ketika dieksekusi, tindakan ini akan menulis konten yang diberikan ke file. Ini digunakan untuk menghasilkan {i>file<i} menggunakan informasi yang tersedia pada fase analisis. Jika file berukuran besar dan berisi banyak konten statis, sebaiknya gunakan
expand_template
.
Parameter
Parameter | Deskripsi |
---|---|
output
|
diperlukan File output. |
content
|
string; or Args ;
memerlukanisi file. Dapat berupa string atau objek actions.args() .
|
is_executable
|
default = False Apakah file output harus dapat dieksekusi. |