Sering kali, tindakan memerlukan command line besar yang berisi nilai yang dikumpulkan dari dependensi transitif. Misalnya, command line linker dapat mencantumkan setiap file objek yang diperlukan oleh semua pustaka yang ditautkan. Sebaiknya simpan data transitif tersebut di depset, sehingga dapat dibagikan oleh beberapa target. Namun, jika penulis aturan harus mengonversi depsets ini menjadi daftar string untuk membuat command line tindakan, hal ini akan membatalkan pengoptimalan berbagi memori ini.
Oleh karena itu, fungsi pembuatan tindakan menerima objek Args selain string. Setiap objek Args merepresentasikan penggabungan string dan depsets, dengan transformasi opsional untuk memanipulasi data. Objek Args tidak memproses depsets yang dienkapsulasinya hingga fase eksekusi, saat tiba waktunya untuk menghitung command line. Tindakan ini membantu menunda penyalinan yang mahal hingga setelah fase analisis selesai. Lihat halaman Mengoptimalkan Performa untuk mengetahui informasi selengkapnya.
Args dibuat dengan memanggil ctx.actions.args(). Variabel ini dapat diteruskan sebagai parameter arguments dari ctx.actions.run() atau ctx.actions.run_shell(). Setiap mutasi objek Args menambahkan nilai ke command line akhir.
Fitur map_each memungkinkan Anda menyesuaikan cara item diubah menjadi string. Jika Anda tidak menyediakan fungsi map_each, konversi standar adalah sebagai berikut: 
- Nilai yang sudah berupa string akan dibiarkan apa adanya.
- Objek Filediubah menjadi nilaiFile.path-nya.
- Objek Labeldiubah menjadi representasi string yang diselesaikan kembali ke objek yang sama saat diselesaikan dalam konteks repositori utama. Jika memungkinkan, representasi string menggunakan nama repositori yang terlihat, bukan nama kanonis repositori, sehingga representasi ini cocok untuk digunakan dalam file BUILD. Meskipun bentuk representasi yang tepat tidak dijamin, contoh umumnya adalah//foo:bar,@repo//foo:bar, dan@@canonical_name+//foo:bar.bzl.
- Semua jenis lainnya diubah menjadi string dengan cara yang tidak ditentukan. Karena     itu, Anda harus menghindari penerusan nilai yang bukan berjenis string atau     Filekeadd(), dan jika Anda meneruskannya keadd_all()atauadd_joined(), Anda harus memberikan fungsimap_each.
Saat menggunakan pemformatan string (parameter format, format_each, dan format_joined dari metode add*()), template format ditafsirkan dengan cara yang sama seperti penggantian % pada string, kecuali template harus memiliki tepat satu placeholder penggantian dan harus berupa %s. Persen literal dapat di-escape sebagai %%. Pemformatan diterapkan setelah nilai dikonversi menjadi string seperti di atas.
Setiap metode add*() memiliki bentuk alternatif yang menerima parameter posisional tambahan, string "nama argumen" untuk disisipkan sebelum argumen lainnya. Untuk add_all dan add_joined, string tambahan tidak akan ditambahkan jika ternyata urutannya kosong. Misalnya, penggunaan yang sama dapat menambahkan --foo val1 val2 val3 --bar atau hanya --bar ke command line, bergantung pada apakah urutan yang diberikan berisi val1..val3 atau kosong.
Jika ukuran command line dapat bertambah lebih panjang dari ukuran maksimum yang diizinkan oleh sistem, argumen dapat dilimpahkan ke file parameter. Lihat use_param_file() dan set_param_file_format().
Contoh: Misalkan kita ingin membuat command line:
--foo foo1.txt foo2.txt ... fooN.txt --bar bar1.txt,bar2.txt,...,barM.txt --baz
Args berikut: 
# foo_deps and bar_deps are depsets containing
# File objects for the foo and bar .txt files.
args = ctx.actions.args()
args.add_all("--foo", foo_deps)
args.add_joined("--bar", bar_deps, join_with=",")
args.add("--baz")
ctx.actions.run(
  ...
  arguments = [args],
  ...
)
Anggota
tambahkan
Args Args.add(arg_name_or_value, value=unbound, *, format=None)
Parameter
| Parameter | Deskripsi | 
|---|---|
| arg_name_or_value | required Jika dua parameter posisional diteruskan, parameter ini ditafsirkan sebagai nama argumen. Nama argumen ditambahkan sebelum nilai tanpa pemrosesan apa pun. Jika hanya satu parameter posisi yang diteruskan, parameter tersebut ditafsirkan sebagai value(lihat di bawah). | 
| value | default adalah unboundObjek yang akan ditambahkan. Nilai tersebut akan dikonversi menjadi string menggunakan konversi standar yang disebutkan di atas. Karena tidak ada parameter map_eachuntuk fungsi ini,valueharus berupa string atauFile. Daftar, tuple, depset, atau direktoriFileharus diteruskan keadd_all()atauadd_joined(), bukan metode ini. | 
| format | string; atau None;
                                     defaultnya adalahNonePola string format, yang akan diterapkan ke versi string dari value. | 
add_all
Args Args.add_all(arg_name_or_values, values=unbound, *, map_each=None, format_each=None, before_each=None, omit_if_empty=True, uniquify=False, expand_directories=True, terminate_with=None, allow_closure=False)
Sebagian besar pemrosesan terjadi melalui daftar argumen yang akan ditambahkan, seperti langkah-langkah berikut:
- Setiap item direktori Filediganti dengan semuaFileyang secara rekursif ada dalam direktori tersebut.
- Jika map_eachdiberikan,map_eachakan diterapkan ke setiap item, dan daftar string yang dihasilkan akan digabungkan untuk membentuk daftar argumen awal. Jika tidak, daftar argumen awal adalah hasil penerapan konversi standar ke setiap item.
- Setiap argumen dalam daftar diformat dengan format_each, jika ada.
- Jika uniquifybenar, argumen duplikat akan dihapus. Kemunculan pertama adalah yang tetap ada.
- Jika string before_eachdiberikan, string tersebut akan disisipkan sebagai argumen baru sebelum setiap argumen yang ada dalam daftar. Hal ini secara efektif menggandakan jumlah argumen yang akan ditambahkan pada titik ini.
- Kecuali jika daftar kosong dan omit_if_emptyadalah benar (default), nama argumen danterminate_withakan disisipkan sebagai argumen pertama dan terakhir, jika diberikan.
Parameter
| Parameter | Deskripsi | 
|---|---|
| arg_name_or_values | required Jika dua parameter posisional diteruskan, parameter ini ditafsirkan sebagai nama argumen. Nama argumen ditambahkan sebelum valuessebagai argumen terpisah tanpa pemrosesan apa pun. Nama argumen ini tidak akan ditambahkan jikaomit_if_emptybenar (default) dan tidak ada item lain yang ditambahkan (seperti yang terjadi jikavalueskosong atau semua itemnya difilter). Jika hanya satu parameter posisi yang diteruskan, parameter tersebut ditafsirkan sebagaivalues(lihat di bawah). | 
| values | sequence; atau depset;
                                     default adalah unboundDaftar, tuple, atau depset yang itemnya akan ditambahkan. | 
| map_each | dapat dipanggil; atau None;
                                     default adalahNoneFungsi yang mengonversi setiap item menjadi nol atau beberapa string, yang dapat diproses lebih lanjut sebelum ditambahkan. Jika parameter ini tidak diberikan, konversi standar akan digunakan. Fungsi ini meneruskan satu atau dua argumen posisi: item yang akan dikonversi, diikuti dengan  Jenis nilai yang ditampilkan bergantung pada jumlah argumen yang akan dihasilkan untuk item: 
 Nonememiliki efek yang sama dengan menampilkan daftar dengan panjang 1 atau panjang 0. Namun, lebih efisien dan mudah dibaca jika tidak membuat daftar jika tidak diperlukan.Biasanya, item yang berupa direktori akan otomatis diperluas ke kontennya saat  Untuk menghindari retensi struktur data fase analisis yang tidak diinginkan ke dalam fase eksekusi, fungsi  Peringatan: Pernyataan  | 
| format_each | string; atau None;
                                     default adalahNonePola string format opsional, diterapkan ke setiap string yang ditampilkan oleh fungsi map_each. String format harus memiliki tepat satu placeholder '%s'. | 
| before_each | string; atau None;
                                     default adalahNoneArgumen opsional yang akan ditambahkan sebelum setiap argumen yang berasal dari valuesditambahkan. | 
| omit_if_empty | bool;
                                     default adalah TrueJika benar (true), jika tidak ada argumen yang berasal dari valuesuntuk ditambahkan, maka semua pemrosesan lebih lanjut akan dihentikan dan command line tidak akan berubah. Jika salah (false), nama argumen danterminate_with, jika diberikan, akan tetap ditambahkan terlepas dari apakah ada argumen lain atau tidak. | 
| uniquify | bool;
                                     default adalah FalseJika benar, argumen duplikat yang berasal dari valuesakan dihilangkan. Hanya kemunculan pertama setiap argumen yang akan tetap ada. Biasanya fitur ini tidak diperlukan karena depsets sudah menghilangkan duplikat, tetapi fitur ini dapat berguna jikamap_eachmemancarkan string yang sama untuk beberapa item. | 
| expand_directories | bool;
                                     default adalah TrueJika benar, semua direktori di valuesakan diuraikan menjadi daftar file datar. Hal ini terjadi sebelummap_eachditerapkan. | 
| terminate_with | string; atau None;
                                     default adalahNoneArgumen opsional untuk ditambahkan setelah semua argumen lainnya. Argumen ini tidak akan ditambahkan jika omit_if_emptybenar (default) dan tidak ada item lain yang ditambahkan (seperti yang terjadi jikavalueskosong atau semua itemnya difilter). | 
| allow_closure | bool;
                                     defaultnya adalah FalseJika benar, mengizinkan penggunaan penutupan dalam parameter fungsi seperti map_each. Biasanya hal ini tidak diperlukan dan berisiko mempertahankan struktur data fase analisis yang besar ke dalam fase eksekusi. | 
add_joined
Args Args.add_joined(arg_name_or_values, values=unbound, *, join_with, map_each=None, format_each=None, format_joined=None, omit_if_empty=True, uniquify=False, expand_directories=True, allow_closure=False)
Pemrosesan mirip dengan add_all(), tetapi daftar argumen yang berasal dari values digabungkan menjadi satu argumen seolah-olah oleh join_with.join(...), lalu diformat menggunakan template string format_joined yang diberikan. Tidak seperti add_all(), tidak ada parameter before_each atau terminate_with karena parameter ini umumnya tidak berguna saat item digabungkan menjadi satu argumen.
Jika setelah pemfilteran tidak ada string yang akan digabungkan menjadi argumen, dan jika omit_if_empty benar (default), tidak ada pemrosesan yang dilakukan. Jika tidak ada string yang akan digabungkan, tetapi omit_if_empty bernilai salah (false), string yang digabungkan akan menjadi string kosong.
          
      
Parameter
| Parameter | Deskripsi | 
|---|---|
| arg_name_or_values | required Jika dua parameter posisional diteruskan, parameter ini ditafsirkan sebagai nama argumen. Nama argumen ditambahkan sebelum valuestanpa pemrosesan apa pun. Argumen ini tidak akan ditambahkan jikaomit_if_emptybenar (default) dan tidak ada string yang berasal darivaluesuntuk digabungkan (yang dapat terjadi jikavalueskosong atau semua itemnya difilter). Jika hanya satu parameter posisi yang diteruskan, parameter tersebut ditafsirkan sebagaivalues(lihat di bawah). | 
| values | sequence; atau depset;
                                     defaultnya adalah unboundDaftar, tuple, atau depset yang itemnya akan digabungkan. | 
| join_with | string;
                                     wajib String pembatas yang digunakan untuk menggabungkan string yang diperoleh dari penerapan map_eachdanformat_each, dengan cara yang sama sepertistring.join(). | 
| map_each | dapat dipanggil; atau None;
                                     defaultnya adalahNoneSama seperti untuk add_all. | 
| format_each | string; atau None;
                                     defaultnya adalahNoneSama seperti untuk add_all. | 
| format_joined | string; atau None;
                                     default adalahNonePola string format opsional yang diterapkan ke string gabungan. String format harus memiliki tepat satu placeholder '%s'. | 
| omit_if_empty | bool;
                                     default adalah TrueJika benar (true), jika tidak ada string yang akan digabungkan (baik karena valueskosong atau semua itemnya difilter), maka semua pemrosesan lebih lanjut akan dihentikan dan command line tidak akan berubah. Jika salah (false), maka meskipun tidak ada string yang akan digabungkan, dua argumen akan ditambahkan: nama argumen diikuti dengan string kosong (yang merupakan gabungan logis dari nol string). | 
| uniquify | bool;
                                     defaultnya adalah FalseSama seperti untuk add_all. | 
| expand_directories | bool;
                                     defaultnya adalah TrueSama seperti untuk add_all. | 
| allow_closure | bool;
                                     defaultnya adalah FalseSama seperti untuk add_all. | 
set_param_file_format
Args Args.set_param_file_format(format)
Parameter
| Parameter | Deskripsi | 
|---|---|
| format | string;
                                     wajib Harus salah satu dari: 
 Format defaultnya adalah "shell" jika tidak dipanggil. | 
use_param_file
Args Args.use_param_file(param_file_arg, *, use_always=False)
Bazel dapat memilih untuk tidak menulis file parameter ke pohon output selama eksekusi agar lebih efisien. Jika Anda men-debug tindakan dan ingin memeriksa file parameter, teruskan --materialize_param_files ke build Anda.
          
      
Parameter
| Parameter | Deskripsi | 
|---|---|
| param_file_arg | string;
                                     wajib diisi String format dengan satu "%s". Jika argumen diluapkan ke file params, argumen tersebut akan diganti dengan argumen yang terdiri dari string ini yang diformat dengan jalur file params. Misalnya, jika argumen ditumpahkan ke file parameter "params.txt", maka penentuan "--file=%s" akan menyebabkan command line tindakan berisi "--file=params.txt". | 
| use_always | bool;
                                     default adalah FalseApakah akan selalu menumpahkan argumen ke file parameter. Jika salah (false), bazel akan memutuskan apakah argumen perlu dipecah berdasarkan sistem dan panjang argumen Anda. |