ctx.actions
สมาชิก
- อาร์กิวเมนต์
- declare_directory
- declare_file
- declare_symlink
- do_nothing
- expand_template
- วิ่ง
- run_shell
- ลิงก์สัญลักษณ์
- template_dict
- เขียน
อาร์กิวเมนต์
Args actions.args()
declare_directory
File actions.declare_directory(filename, *, sibling=None)
Args.add_all()
          
      พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| filename | ต้องระบุ หากไม่มี "พี่น้อง" เส้นทางของไดเรกทอรีใหม่ที่ระบุ โดยที่สัมพันธ์กับแพ็กเกจปัจจุบัน มิฉะนั้น ชื่อฐานสำหรับไฟล์ ("ระดับเดียวกัน" จะกำหนดไดเรกทอรี) | 
| sibling | File; or None;
                                     ค่าเริ่มต้น = ไม่มีไฟล์ที่อาศัยอยู่ในไดเรกทอรีเดียวกับไดเรกทอรีที่ประกาศใหม่ ไฟล์ต้องอยู่ในแพ็กเกจปัจจุบัน | 
declare_file
File actions.declare_file(filename, *, sibling=None)
sibling ชื่อไฟล์จะสัมพันธ์กับไดเรกทอรีแพ็กเกจ มิฉะนั้นไฟล์จะอยู่ในไดเรกทอรีเดียวกับ sibling ไม่สามารถสร้างไฟล์นอกแพ็กเกจปัจจุบันโปรดทราบว่านอกเหนือจากการประกาศไฟล์แล้ว คุณต้องสร้างการดำเนินการที่ปล่อยไฟล์แยกต่างหากด้วย การสร้างการดำเนินการดังกล่าวจะต้องส่งออบเจ็กต์ File ที่แสดงผลไปยังฟังก์ชันการสร้างของการดำเนินการ
โปรดทราบว่าไฟล์เอาต์พุตที่ประกาศล่วงหน้าไม่จําเป็นต้องมีการประกาศโดยใช้ฟังก์ชันนี้ คุณสามารถรับออบเจ็กต์ File ของผู้ใช้ได้จาก ctx.outputs แทน ดูตัวอย่างการใช้
          
      
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| filename | ต้องระบุ หากไม่มี "พี่น้อง" เส้นทางของไฟล์ใหม่ที่ระบุ โดยเกี่ยวข้องกับแพ็กเกจปัจจุบัน มิฉะนั้น ชื่อฐานสำหรับไฟล์ ("ระดับเดียวกัน" จะกำหนดไดเรกทอรี) | 
| sibling | File; or None;
                                     ค่าเริ่มต้น = ไม่มีไฟล์ที่อยู่ในไดเรกทอรีเดียวกับไฟล์ที่สร้างใหม่ ไฟล์ต้องอยู่ในแพ็กเกจปัจจุบัน | 
declare_symlink
File actions.declare_symlink(filename, *, sibling=None)
ทดลอง พารามิเตอร์นี้อยู่ในขั้นทดลองและอาจเปลี่ยนแปลงได้ตลอดเวลา โปรดอย่าพึ่งพา ซึ่งอาจเปิดใช้ในการทดสอบโดยการตั้งค่า --experimental_allow_unresolved_symlinks
ประกาศว่ากฎหรือองค์ประกอบจะสร้างลิงก์สัญลักษณ์ที่มีชื่อที่ระบุในแพ็กเกจปัจจุบัน คุณต้องสร้างการดำเนินการที่สร้างลิงก์สัญลักษณ์นี้ Bazel จะไม่ยับยั้งลิงก์สัญลักษณ์นี้ และจะโอนแบบคำต่อคำไปยังแซนด์บ็อกซ์หรือผู้ดำเนินการระยะไกล
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| filename | ต้องระบุ หากไม่มี "พี่น้อง" ที่ระบุ เส้นทางของลิงก์สัญลักษณ์ใหม่ที่เกี่ยวข้องกับแพ็กเกจปัจจุบัน มิฉะนั้น ชื่อฐานสำหรับไฟล์ ("ระดับเดียวกัน" จะกำหนดไดเรกทอรี) | 
| sibling | File; or None;
                                     ค่าเริ่มต้น = ไม่มีไฟล์ที่อาศัยอยู่ในไดเรกทอรีเดียวกับลิงก์สัญลักษณ์ที่ประกาศใหม่ | 
do_nothing
None actions.do_nothing(mnemonic, inputs=[])
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| mnemonic | ต้องระบุ คำอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink | 
| inputs | sequence of Files; or depset;
                                     ค่าเริ่มต้น = []รายการไฟล์อินพุตของการดำเนินการ | 
expand_template
None actions.expand_template(template, output, substitutions={}, is_executable=False, computed_substitutions=unbound)
substitutions ตามลำดับที่ระบุการแทนที่ เมื่อใดก็ตามที่คีย์ของพจนานุกรมปรากฏในเทมเพลต (หรือเป็นผลมาจากการแทนที่ก่อนหน้านี้) คีย์ดังกล่าวจะถูกแทนที่ด้วยค่าที่เกี่ยวข้อง ไม่มีไวยากรณ์พิเศษสำหรับคีย์ ตัวอย่างเช่น คุณอาจใช้วงเล็บปีกกาเพื่อหลีกเลี่ยงความขัดแย้ง (เช่น {KEY}) ดูตัวอย่างการใช้
          
      พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| template | ต้องระบุ ไฟล์เทมเพลต ซึ่งเป็นไฟล์ข้อความที่เข้ารหัสแบบ UTF-8 | 
| output | ต้องระบุ ไฟล์เอาต์พุต ซึ่งเป็นไฟล์ข้อความที่เข้ารหัสแบบ UTF-8 | 
| substitutions | default = {} การแทนที่ที่ต้องทำเมื่อขยายเทมเพลต | 
| is_executable | ค่าเริ่มต้น = เท็จ ไฟล์เอาต์พุตควรเป็นไฟล์ปฏิบัติการหรือไม่ | 
| computed_substitutions | TemplateDict;
                                     ค่าเริ่มต้น = ไม่จำกัดทดลอง พารามิเตอร์นี้อยู่ในขั้นทดลองและอาจเปลี่ยนแปลงได้ตลอดเวลา โปรดอย่าพึ่งพา ซึ่งอาจเปิดใช้ในการทดสอบโดยการตั้งค่า --+experimental_lazy_template_expansionทดลอง: การแทนที่ที่จะทำเมื่อขยายเทมเพลต | 
โฮมรัน
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)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| outputs | sequence of Files;
                                     ต้องระบุรายการไฟล์เอาต์พุตของการดำเนินการ | 
| inputs | sequence of Files; or depset;
                                     ค่าเริ่มต้น = []แสดงรายการหรือคืนค่าไฟล์อินพุตของการดำเนินการ | 
| unused_inputs_list | File; or None;
                                     ค่าเริ่มต้น = ไม่มีไฟล์ที่มีรายการอินพุตที่การดำเนินการไม่ได้ใช้ เนื้อหาของไฟล์นี้ (โดยทั่วไปเป็นหนึ่งในเอาต์พุตของการดำเนินการ) สอดคล้องกับรายการไฟล์อินพุตที่ไม่ได้ใช้ระหว่างการดำเนินการทั้งหมด การเปลี่ยนแปลงใดๆ ในไฟล์เหล่านั้นต้องไม่ส่งผลกระทบใดๆ ต่อเอาต์พุตของการดำเนินการ | 
| executable | File; or string; or FilesToRunProvider;
                                     ต้องระบุไฟล์ปฏิบัติการที่จะเรียกใช้โดยการดำเนินการ | 
| tools | sequence; or depset;
                                     ค่าเริ่มต้น = ไม่จำกัดแสดงรายการหรือเลิกใช้เครื่องมือที่การดำเนินการนี้ต้องใช้ เครื่องมือเป็นอินพุตพร้อมไฟล์เรียกใช้เพิ่มเติมที่พร้อมใช้งานกับการดำเนินการโดยอัตโนมัติ เมื่อมีการระบุรายการ อาจมีคอลเล็กชันที่หลากหลายของอินสแตนซ์ Files, FilesToRunProvider หรือ Depset ของ Files ไฟล์ที่อยู่ในรายการและมาจาก ctx.executable โดยตรงจะได้รับการเพิ่ม Runfile โดยอัตโนมัติ เมื่อระบุ Depset แล้ว ไฟล์ดังกล่าวต้องมีเฉพาะ Files เท่านั้น ในทั้ง 2 กรณี ไฟล์ที่อยู่ใน Depset จะไม่ได้รับการเปรียบเทียบกับ ctx.executable สำหรับ Runfiles | 
| arguments | sequence;
                                     ค่าเริ่มต้น = []อาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args() | 
| mnemonic | string; or None;
                                     ค่าเริ่มต้น = ไม่มีคำอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink | 
| progress_message | string; or None;
                                     ค่าเริ่มต้น = ไม่มีข้อความความคืบหน้าที่จะแสดงต่อผู้ใช้ในระหว่างบิลด์ เช่น "คอมไพล์ foo.cc เพื่อสร้าง foo.o" ข้อความอาจมีรูปแบบ %{label},%{input}หรือ%{output}ซึ่งแทนที่ด้วยสตริงป้ายกำกับ อินพุตแรก หรือเส้นทางของเอาต์พุตตามลำดับ ต้องการใช้รูปแบบแทนสตริงคงที่ เนื่องจากรูปแบบแรกมีประสิทธิภาพมากกว่า | 
| use_default_shell_env | ค่าเริ่มต้น = เท็จ การดำเนินการควรใช้สภาพแวดล้อม Shell ในตัวหรือไม่ | 
| env | dict; or None;
                                     ค่าเริ่มต้น = ไม่มีตั้งค่าพจนานุกรมของตัวแปรสภาพแวดล้อม | 
| execution_requirements | dict; or None;
                                     ค่าเริ่มต้น = ไม่มีข้อมูลสําหรับการตั้งเวลาการดําเนินการ ดูแท็กสำหรับคีย์ที่มีประโยชน์ | 
| input_manifests | sequence; or None;
                                     ค่าเริ่มต้น = ไม่มี(ทดลอง) ตั้งค่าข้อมูลเมตาของไฟล์อินพุตสำหรับการเรียกใช้ ซึ่งมักสร้างโดยresolve_command | 
| exec_group | string; or None;
                                     ค่าเริ่มต้น = ไม่มีเรียกใช้การดำเนินการบนแพลตฟอร์มการดำเนินการของกลุ่มผู้บริหารที่ระบุ หากไม่มี ให้ใช้แพลตฟอร์มการดำเนินการเริ่มต้นของเป้าหมาย | 
| shadowed_action | Action;
                                     ค่าเริ่มต้น = ไม่มีเรียกใช้การดำเนินการโดยใช้อินพุตและสภาพแวดล้อมของการดำเนินการที่ถูกซ้อนที่ระบุที่เพิ่มลงในรายการอินพุตและสภาพแวดล้อมของการดำเนินการ สภาพแวดล้อมการดำเนินการสามารถเขียนทับตัวแปรสภาพแวดล้อมของการดำเนินการที่ถูกซ้อนได้ หากไม่มี ให้ใช้เฉพาะอินพุตของการดำเนินการและสภาพแวดล้อมที่กำหนด | 
| resource_set | callable; or None;
                                     ค่าเริ่มต้น = ไม่มีฟังก์ชัน Callback ที่ส่งคืนพจนานุกรมชุดทรัพยากร ซึ่งใช้เพื่อประมาณการใช้งานทรัพยากรขณะดำเนินการหากเรียกใช้การดำเนินการนี้ในเครื่อง ฟังก์ชันนี้ยอมรับอาร์กิวเมนต์ตำแหน่ง 2 รายการ ได้แก่ สตริงที่มีชื่อระบบปฏิบัติการ (เช่น "osx") และจำนวนเต็มที่แสดงถึงจำนวนอินพุตของการทำงาน พจนานุกรมที่แสดงผลอาจมีรายการต่อไปนี้ ซึ่งแต่ละรายการอาจเป็นแบบลอยหรือ int: 
 หากตั้งค่าพารามิเตอร์นี้เป็น  Callback ต้องเป็นระดับบนสุด (ไม่อนุญาตให้ใช้ lambda และฟังก์ชันที่ซ้อนกัน) | 
| toolchain | Label; or string; or None;
                                     ค่าเริ่มต้น = ไม่มีประเภท Toolchain ของไฟล์ปฏิบัติการหรือเครื่องมือที่ใช้ในการดำเนินการนี้ ต้องตั้งค่าพารามิเตอร์เพื่อให้การดำเนินการนั้นดำเนินการบนแพลตฟอร์มการดำเนินการที่ถูกต้อง ตอนนี้ยังไม่มีการดำเนินการ แต่เราขอแนะนำให้ตั้งค่าเมื่อมีการใช้เครื่องมือเชน เนื่องจากจำเป็นสำหรับ Bazel รุ่นต่อๆ ไป โปรดทราบว่ากฎที่สร้างการดำเนินการนี้จะต้องกำหนด Toolchain นี้ภายใน "rule()" ด้วย เมื่อตั้งค่าทั้งพารามิเตอร์ "toolchain" และ "exec_group" ระบบจะใช้ "exec_group" ข้อผิดพลาดจะปรากฏขึ้นในกรณีที่ "exec_group" ไม่ได้ระบุค่าเดียวกัน | 
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)
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| outputs | sequence of Files;
                                     ต้องระบุรายการไฟล์เอาต์พุตของการดำเนินการ | 
| inputs | sequence of Files; or depset;
                                     ค่าเริ่มต้น = []แสดงรายการหรือคืนค่าไฟล์อินพุตของการดำเนินการ | 
| tools | sequence of Files; or depset;
                                     ค่าเริ่มต้น = ไม่จำกัดแสดงรายการหรือเลิกใช้เครื่องมือที่การดำเนินการนี้ต้องใช้ เครื่องมือเป็นอินพุตพร้อมไฟล์เรียกใช้เพิ่มเติมที่พร้อมใช้งานกับการดำเนินการโดยอัตโนมัติ รายการอาจมีอินสแตนซ์ Files หรือ FilesToRunProvider ก็ได้ | 
| arguments | sequence;
                                     ค่าเริ่มต้น = []อาร์กิวเมนต์บรรทัดคำสั่งของการดำเนินการ ต้องเป็นรายการสตริงหรือออบเจ็กต์ actions.args()Bazel ส่งองค์ประกอบในแอตทริบิวต์นี้เป็นอาร์กิวเมนต์ไปยังคำสั่ง คำสั่งจะเข้าถึงอาร์กิวเมนต์เหล่านี้ได้โดยใช้การแทนที่ตัวแปรเชลล์ เช่น  ในกรณีที่  | 
| mnemonic | string; or None;
                                     ค่าเริ่มต้น = ไม่มีคำอธิบายการดำเนินการแบบ 1 คำ เช่น CppCompile หรือ GoLink | 
| command | string; or sequence of strings;
                                     ต้องระบุคำสั่ง Shell ที่จะดำเนินการ ซึ่งอาจเป็นสตริง (แนะนำ) หรือลำดับสตริง (เลิกใช้งานแล้ว) หาก  (เลิกใช้งานแล้ว) หาก  Bazel ใช้เชลล์เดียวกันเพื่อดำเนินการคำสั่งเหมือนกับที่ใช้กับ genrule | 
| progress_message | string; or None;
                                     ค่าเริ่มต้น = ไม่มีข้อความความคืบหน้าที่จะแสดงต่อผู้ใช้ในระหว่างบิลด์ เช่น "คอมไพล์ foo.cc เพื่อสร้าง foo.o" ข้อความอาจมีรูปแบบ %{label},%{input}หรือ%{output}ซึ่งแทนที่ด้วยสตริงป้ายกำกับ อินพุตแรก หรือเส้นทางของเอาต์พุตตามลำดับ ต้องการใช้รูปแบบแทนสตริงคงที่ เนื่องจากรูปแบบแรกมีประสิทธิภาพมากกว่า | 
| use_default_shell_env | ค่าเริ่มต้น = เท็จ การดำเนินการควรใช้สภาพแวดล้อม Shell ในตัวหรือไม่ | 
| env | dict; or None;
                                     ค่าเริ่มต้น = ไม่มีตั้งค่าพจนานุกรมของตัวแปรสภาพแวดล้อม | 
| execution_requirements | dict; or None;
                                     ค่าเริ่มต้น = ไม่มีข้อมูลสําหรับการตั้งเวลาการดําเนินการ ดูแท็กสำหรับคีย์ที่มีประโยชน์ | 
| input_manifests | sequence; or None;
                                     ค่าเริ่มต้น = ไม่มี(ทดลอง) ตั้งค่าข้อมูลเมตาของไฟล์อินพุตสำหรับการเรียกใช้ ซึ่งมักสร้างโดยresolve_command | 
| exec_group | string; or None;
                                     ค่าเริ่มต้น = ไม่มีเรียกใช้การดำเนินการบนแพลตฟอร์มการดำเนินการของกลุ่มผู้บริหารที่ระบุ หากไม่มี ให้ใช้แพลตฟอร์มการดำเนินการเริ่มต้นของเป้าหมาย | 
| shadowed_action | Action;
                                     ค่าเริ่มต้น = ไม่มีเรียกใช้การทำงานโดยใช้อินพุตที่ค้นพบของการดำเนินการที่ถูกซ้อนที่กำหนดลงในรายการอินพุตของการดำเนินการ หากไม่มี ให้ใช้เฉพาะอินพุตของการดำเนินการเท่านั้น | 
| resource_set | callable; or None;
                                     ค่าเริ่มต้น = ไม่มีฟังก์ชัน Callback สำหรับการประมาณการใช้งานทรัพยากรหากเรียกใช้ในเครื่อง โปรดดู ctx.actions.run() | 
| toolchain | Label; or string; or None;
                                     ค่าเริ่มต้น = ไม่มีประเภท Toolchain ของไฟล์ปฏิบัติการหรือเครื่องมือที่ใช้ในการดำเนินการนี้ ต้องตั้งค่าพารามิเตอร์เพื่อให้การดำเนินการนั้นดำเนินการบนแพลตฟอร์มการดำเนินการที่ถูกต้อง ตอนนี้ยังไม่มีการดำเนินการ แต่เราขอแนะนำให้ตั้งค่าเมื่อมีการใช้เครื่องมือเชน เนื่องจากจำเป็นสำหรับ Bazel รุ่นต่อๆ ไป โปรดทราบว่ากฎที่สร้างการดำเนินการนี้จะต้องกำหนด Toolchain นี้ภายใน "rule()" ด้วย เมื่อตั้งค่าทั้งพารามิเตอร์ "toolchain" และ "exec_group" ระบบจะใช้ "exec_group" ข้อผิดพลาดจะปรากฏขึ้นในกรณีที่ "exec_group" ไม่ได้ระบุค่าเดียวกัน Toolchain | 
ลิงก์สัญลักษณ์
None actions.symlink(output, target_file=None, target_path=None, is_executable=False, progress_message=None)
ต้องเรียกใช้ฟังก์ชันนี้โดยระบุ target_file หรือ target_path อย่างใดอย่างหนึ่งเท่านั้น
เมื่อคุณใช้ target_file ให้ประกาศ output ด้วย declare_file() หรือ declare_directory() และจับคู่ประเภทของ target_file ซึ่งจะทำให้ลิงก์สัญลักษณ์ชี้ไปที่ target_file Bazel ยกเลิกเอาต์พุตของการกระทำนี้เมื่อเป้าหมายของลิงก์สัญลักษณ์หรือเนื้อหาของลิงก์มีการเปลี่ยนแปลง
หรือเมื่อใช้ target_path ให้ประกาศ output ด้วย declare_symlink()) ในกรณีนี้ ลิงก์สัญลักษณ์จะชี้ไปยัง target_path Bazel จะไม่แก้ไขลิงก์สัญลักษณ์และเอาต์พุตของการดำเนินการนี้จะใช้ไม่ได้เมื่อเนื้อหาข้อความของลิงก์สัญลักษณ์ (ซึ่งก็คือค่าของ readlink()) มีการเปลี่ยนแปลง โดยเฉพาะอย่างยิ่ง สามารถใช้เพื่อสร้างลิงก์สัญลักษณ์ที่อันตรายได้
พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| output | ต้องระบุ เอาต์พุตของการดำเนินการนี้ | 
| target_file | File; or None;
                                     ค่าเริ่มต้น = ไม่มีไฟล์ที่ลิงก์สัญลักษณ์เอาต์พุตจะชี้ไป | 
| target_path | string; or None;
                                     ค่าเริ่มต้น = ไม่มี(ทดลอง) เส้นทางที่แน่นอนซึ่งลิงก์สัญลักษณ์เอาต์พุตจะชี้ไป โดยจะไม่มีการใช้การปรับให้เป็นมาตรฐานหรือการประมวลผลอื่นๆ ต้องตั้งค่า --experimental_allow_unresolved_symlinksจึงจะเข้าถึงฟีเจอร์นี้ได้ | 
| is_executable | ค่าเริ่มต้น = เท็จ ใช้ได้กับ target_fileเท่านั้น ใช้กับtarget_pathไม่ได้ หากเป็น "จริง" ระบบจะตรวจสอบเส้นทางของtarget_fileเพื่อยืนยันว่าเรียกใช้ได้ และจะรายงานข้อผิดพลาดหากไม่ได้ดำเนินการ การตั้งค่าis_executableเป็น "เท็จ" ไม่ได้หมายความว่าเป้าหมายเรียกใช้ไม่ได้ เพียงแต่ว่าไม่มีการยืนยันจนเสร็จสมบูรณ์ฟีเจอร์นี้ไม่เหมาะกับ  | 
| progress_message | string; or None;
                                     ค่าเริ่มต้น = ไม่มีข้อความความคืบหน้าที่จะแสดงต่อผู้ใช้ในระหว่างบิลด์ | 
template_dict
TemplateDict actions.template_dict()
--+experimental_lazy_template_expansion ทดลอง: แสดงผลออบเจ็กต์ TemplateDict สำหรับการขยายเทมเพลตที่ประหยัดหน่วยความจำ
เขียน
None actions.write(output, content, is_executable=False)
expand_template
          
      พารามิเตอร์
| พารามิเตอร์ | คำอธิบาย | 
|---|---|
| output | ต้องระบุ ไฟล์เอาต์พุต | 
| content | string; or Args;
                                     ต้องระบุเนื้อหาในไฟล์ อาจเป็นสตริงหรือออบเจ็กต์ actions.args()ก็ได้ | 
| is_executable | ค่าเริ่มต้น = เท็จ ไฟล์เอาต์พุตควรเป็นไฟล์ปฏิบัติการหรือไม่ |