โมดูลมีสิทธิ์

บริบทของส่วนขยายโมดูลที่มีฟังก์ชันตัวช่วยและข้อมูลเกี่ยวกับแท็กที่เกี่ยวข้องในกราฟการอ้างอิง คุณจะได้รับออบเจ็กต์ module_ctx เป็นอาร์กิวเมนต์ของฟังก์ชัน implementation เมื่อสร้างส่วนขยายโมดูล

สมาชิก

ดาวน์โหลด

struct module_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, *, integrity='')

ดาวน์โหลดไฟล์ไปยังเส้นทางเอาต์พุตสำหรับ URL ที่ระบุ และแสดงผลโครงสร้างที่มี success ซึ่งเป็นแฟล็กที่แสดงเป็น true หากดาวน์โหลดเสร็จสมบูรณ์ และหากดาวน์โหลดสำเร็จ จะแสดงผลแฮชของไฟล์ที่มีฟิลด์ sha256 และ integrity

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
url string หรือ Iterable ของ string ต้องระบุ
รายการ URL แบบมิเรอร์ที่อ้างอิงไฟล์เดียวกัน
output string หรือ Label หรือ path ค่าเริ่มต้นคือ ''
เส้นทางไปยังไฟล์เอาต์พุตที่เกี่ยวข้องกับไดเรกทอรีที่เก็บ
sha256 ค่าเริ่มต้นคือ ''
แฮช SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับแฮช SHA-256 ของไฟล์ที่ดาวน์โหลด การละเว้น SHA-256 เป็นความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์เมติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง
executable ค่าเริ่มต้นคือ False
ตั้งค่าสถานะที่เรียกใช้งานได้ในไฟล์ที่สร้างขึ้น โดยค่าเริ่มต้นจะเป็น false
allow_fail ค่าเริ่มต้นคือ False
หากตั้งค่าไว้ ให้ระบุข้อผิดพลาดในค่าที่ส่งคืนแทนที่จะแจ้งข้อผิดพลาดสำหรับการดาวน์โหลดที่ไม่สำเร็จ
canonical_id ค่าเริ่มต้นคือ ''
หากตั้งค่าไว้ ให้จำกัดการเข้าถึงแคชเฉพาะกรณีที่เพิ่มไฟล์ลงในแคชด้วยรหัส Canonical เดียวกัน
auth ค่าเริ่มต้นคือ {}
พจนานุกรมที่ไม่บังคับซึ่งระบุข้อมูลการตรวจสอบสิทธิ์สำหรับ URL บางรายการ
integrity ค่าเริ่มต้นคือ ''
ผลรวมตรวจสอบที่คาดไว้ของไฟล์ที่ดาวน์โหลดในรูปแบบความสมบูรณ์ของทรัพยากรย่อย ต้องตรงกับผลรวมตรวจสอบของไฟล์ที่ดาวน์โหลด การละเว้นการตรวจสอบผลรวมมีความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์เมติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง

download_and_extract

struct module_ctx.download_and_extract(url, output='', sha256='', type='', stripPrefix='', allow_fail=False, canonical_id='', auth={}, *, integrity='', rename_files={})

ดาวน์โหลดไฟล์ไปยังเส้นทางเอาต์พุตสำหรับ URL ที่ระบุ แยกไฟล์ และส่งคืนโครงสร้างที่มี success ซึ่งเป็นแฟล็กที่แสดงเป็น true หากดาวน์โหลดเสร็จสมบูรณ์ และหากดาวน์โหลดสำเร็จ ระบบจะส่งคืนแฮชของไฟล์ที่มีฟิลด์ sha256 และ integrity

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
url string หรือ Iterable ของ string ต้องระบุ
รายการ URL แบบมิเรอร์ที่อ้างอิงไฟล์เดียวกัน
output string หรือ Label หรือ path ค่าเริ่มต้นคือ ''
เส้นทางไปยังไดเรกทอรีที่จะแตกไฟล์เก็บถาวร ซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ
sha256 ค่าเริ่มต้นคือ ''
แฮช SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับแฮช SHA-256 ของไฟล์ที่ดาวน์โหลด การละเว้น SHA-256 เป็นความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์เมติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชของที่เก็บก่อนเพื่อหาไฟล์ที่มีแฮชที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ในแคช หลังจากดาวน์โหลดสำเร็จแล้ว ระบบจะเพิ่มไฟล์ลงในแคช
type ค่าเริ่มต้นคือ ''
ประเภทที่เก็บถาวรของไฟล์ที่ดาวน์โหลด โดยค่าเริ่มต้น ระบบจะกำหนดประเภทที่เก็บถาวรจากนามสกุลไฟล์ของ URL หากไฟล์ไม่มีนามสกุล คุณสามารถระบุ "zip", "jar", "war", "aar", "tar", "tar.gz", "tgz", "tar.xz", "txz", ".tar.zst", ".tzst", "tar.bz2", ".tbz", ".ar" หรือ ".deb" ได้ที่นี่
stripPrefix ค่าเริ่มต้นคือ ''
คำนำหน้าไดเรกทอรีที่จะนำออกจากไฟล์ที่แยก ที่เก็บถาวรจำนวนมากมีไดเรกทอรีระดับบนสุดซึ่งมีไฟล์ทั้งหมดในที่เก็บถาวร คุณสามารถใช้ฟิลด์นี้เพื่อนำคำนำหน้านี้ออกจากไฟล์ที่แยกออกมาได้แทนที่จะต้องระบุคำนำหน้านี้ซ้ำๆ ใน build_file
allow_fail ค่าเริ่มต้นคือ False
หากตั้งค่าไว้ ให้ระบุข้อผิดพลาดในค่าที่ส่งคืนแทนที่จะแจ้งข้อผิดพลาดสำหรับการดาวน์โหลดที่ไม่สำเร็จ
canonical_id ค่าเริ่มต้นคือ ''
หากตั้งค่าไว้ ให้จำกัดการเข้าถึงแคชเฉพาะกรณีที่เพิ่มไฟล์ลงในแคชด้วยรหัส Canonical เดียวกัน
auth ค่าเริ่มต้นคือ {}
พจนานุกรมที่ไม่บังคับซึ่งระบุข้อมูลการตรวจสอบสิทธิ์สำหรับ URL บางรายการ
integrity ค่าเริ่มต้นคือ ''
ผลรวมตรวจสอบที่คาดไว้ของไฟล์ที่ดาวน์โหลดในรูปแบบความสมบูรณ์ของทรัพยากรย่อย ต้องตรงกับผลรวมตรวจสอบของไฟล์ที่ดาวน์โหลด การละเว้นการตรวจสอบผลรวมมีความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์เมติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง
rename_files ค่าเริ่มต้นคือ {}
พจนานุกรมที่ไม่บังคับซึ่งระบุไฟล์ที่จะเปลี่ยนชื่อระหว่างการแยก รายการที่เก็บถาวรซึ่งมีชื่อตรงกับคีย์จะได้รับการเปลี่ยนชื่อเป็นค่าก่อนที่จะมีการปรับคำนำหน้าไดเรกทอรี ใช้เพื่อแยกไฟล์เก็บถาวรที่มีชื่อไฟล์ที่ไม่ใช่ Unicode หรือมีไฟล์ที่จะแยกไปยังเส้นทางเดียวกันในระบบไฟล์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

ดำเนินการ

exec_result module_ctx.execute(arguments, timeout=600, environment={}, quiet=True, working_directory="")

เรียกใช้คำสั่งที่ระบุโดยรายการอาร์กิวเมนต์ เวลาในการดำเนินการของคำสั่งจะจำกัดโดย timeout (เป็นวินาที ค่าเริ่มต้นคือ 600 วินาที) เมธอดนี้จะแสดงผลโครงสร้าง exec_result ที่มีเอาต์พุตของคำสั่ง คุณใช้แมป environment เพื่อลบล้างตัวแปรสภาพแวดล้อมบางอย่างที่จะส่งไปยังกระบวนการได้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
arguments required
รายการอาร์กิวเมนต์ องค์ประกอบแรกควรเป็นเส้นทางไปยังโปรแกรมที่จะเรียกใช้
timeout ค่าเริ่มต้นคือ 600
ระยะเวลาสูงสุดของคำสั่งเป็นวินาที (ค่าเริ่มต้นคือ 600 วินาที)
environment ค่าเริ่มต้นคือ {}
บังคับให้ตั้งค่าตัวแปรสภาพแวดล้อมบางรายการเพื่อส่งไปยังกระบวนการ
quiet ค่าเริ่มต้นคือ True
หากควรพิมพ์ stdout และ stderr ไปยังเทอร์มินัล
working_directory ค่าเริ่มต้นคือ ""
ไดเรกทอรีการทำงานสำหรับการเรียกใช้คำสั่ง อาจเป็นแบบสัมพัทธ์กับรูทของที่เก็บหรือแบบสัมบูรณ์ก็ได้

extension_metadata

extension_metadata module_ctx.extension_metadata(root_module_direct_deps=None, root_module_direct_dev_deps=None)

สร้างออบเจ็กต์ทึบแสงที่สามารถแสดงผลจากฟังก์ชันการใช้งานของส่วนขยายโมดูลเพื่อระบุข้อมูลเมตาเกี่ยวกับที่เก็บที่ส่วนขยายสร้างขึ้นให้กับ Bazel

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
root_module_direct_deps ลำดับของสตริง หรือสตริง หรือ None ค่าเริ่มต้นคือ None
ชื่อของที่เก็บที่ส่วนขยายถือว่าเป็นทรัพยากร Dependency โดยตรงของโมดูลรูท หากโมดูลรูทนำเข้าที่เก็บเพิ่มเติมหรือไม่ได้นำเข้าที่เก็บทั้งหมดเหล่านี้ผ่าน use_repo Bazel จะพิมพ์คำเตือนและคำสั่งแก้ไขเมื่อมีการประเมินส่วนขยาย

หากมีการระบุ root_module_direct_deps หรือ root_module_direct_dev_deps รายการใดรายการหนึ่ง คุณต้องระบุอีกรายการด้วย รายการที่ระบุโดยพารามิเตอร์ทั้ง 2 รายการนี้ต้องไม่ซ้ำกัน

คุณตั้งค่า root_module_direct_deps และ root_module_direct_dev_deps ได้เพียง 1 รายการเป็นค่าพิเศษ "all" ซึ่งระบบจะถือว่ามีการระบุรายการที่มีชื่อของที่เก็บทั้งหมดที่ส่วนขยายสร้างขึ้นเป็นค่า

root_module_direct_dev_deps ลำดับของสตริง หรือสตริง หรือ None ค่าเริ่มต้นคือ None
ชื่อของที่เก็บที่ส่วนขยายถือว่าเป็นทรัพยากร Dependency สำหรับการพัฒนาโดยตรงของโมดูลราก หากโมดูลรูทนำเข้ารีโปซิทอรีเพิ่มเติมหรือไม่นำเข้ารีโปซิทอรีทั้งหมดเหล่านี้ผ่าน use_repo ในพร็อกซีส่วนขยายที่สร้างด้วย use_extension(..., dev_dependency = True) Bazel จะพิมพ์คำเตือนและคำสั่งแก้ไขเมื่อมีการประเมินส่วนขยาย

หากมีการระบุ root_module_direct_deps หรือ root_module_direct_dev_deps รายการใดรายการหนึ่ง คุณต้องระบุอีกรายการด้วย รายการที่ระบุโดยพารามิเตอร์ทั้ง 2 รายการนี้ต้องไม่ซ้ำกัน

คุณตั้งค่า root_module_direct_deps และ root_module_direct_dev_deps ได้เพียง 1 รายการเป็นค่าพิเศษ "all" ซึ่งระบบจะถือว่ามีการระบุรายการที่มีชื่อของที่เก็บทั้งหมดที่ส่วนขยายสร้างขึ้นเป็นค่า

ไฟล์

None module_ctx.file(path, content='', executable=True, legacy_utf8=True)

สร้างไฟล์ในไดเรกทอรีที่เก็บด้วยเนื้อหาที่ระบุ

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
path สตริง หรือ Label หรือ path ต้องระบุ
เส้นทางของไฟล์ที่จะสร้าง ซึ่งสัมพันธ์กับไดเรกทอรีของที่เก็บ
content ค่าเริ่มต้นคือ ''
เนื้อหาของไฟล์ที่จะสร้าง โดยค่าเริ่มต้นจะว่างเปล่า
executable ค่าเริ่มต้นคือ True
ตั้งค่าสถานะที่เรียกใช้งานได้ในไฟล์ที่สร้างขึ้น โดยค่าเริ่มต้นจะเป็นจริง
legacy_utf8 ค่าเริ่มต้นคือ True
เข้ารหัสเนื้อหาไฟล์เป็น UTF-8 ซึ่งเป็นค่าเริ่มต้น เวอร์ชันในอนาคตจะเปลี่ยนค่าเริ่มต้นและนำพารามิเตอร์นี้ออก

is_dev_dependency

bool module_ctx.is_dev_dependency(tag)

แสดงผลว่ามีการระบุแท็กที่กำหนดในผลลัพธ์ของการเรียก use_extension ด้วย devDependency = True หรือไม่

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
tag bazel_module_tag; required
แท็กที่ได้จาก bazel_module.tags

โมดูล

list module_ctx.modules

รายการโมดูล Bazel ทั้งหมดในกราฟการขึ้นต่อกันภายนอกที่ใช้ส่วนขยายโมดูลนี้ ซึ่งแต่ละโมดูลเป็นออบเจ็กต์ bazel_module ที่แสดงแท็กทั้งหมดที่ระบุไว้สำหรับส่วนขยายนี้ ระบบรับประกันว่าลำดับการวนซ้ำของพจนานุกรมนี้จะเหมือนกับการค้นหาแบบกว้างก่อน (Breadth-First Search) โดยเริ่มจากโมดูลราก

os

repository_os module_ctx.os

โครงสร้างเพื่อเข้าถึงข้อมูลจากระบบ

เส้นทาง

path module_ctx.path(path)

แสดงผลเส้นทางจากสตริง ป้ายกำกับ หรือเส้นทาง หากเป็นเส้นทางแบบสัมพัทธ์ ระบบจะแปลงเส้นทางดังกล่าวให้สัมพันธ์กับไดเรกทอรีที่เก็บ หากเส้นทางเป็นป้ายกำกับ ระบบจะเปลี่ยนเส้นทางไปยังเส้นทางของไฟล์ที่เกี่ยวข้อง โปรดทราบว่าระบบจะเรียกใช้ที่เก็บข้อมูลระยะไกลในระหว่างขั้นตอนการวิเคราะห์ จึงไม่สามารถขึ้นอยู่กับผลลัพธ์เป้าหมายได้ (ป้ายกำกับควรชี้ไปยังไฟล์ที่ไม่ได้สร้างขึ้น) หาก path เป็นเส้นทาง ฟังก์ชันจะแสดงผลเส้นทางนั้นตามเดิม

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
path string หรือ Label หรือ path ต้องระบุ
สตริง ป้ายกำกับ หรือเส้นทางที่จะสร้างเส้นทางจาก

อ่าน

string module_ctx.read(path)

อ่านเนื้อหาของไฟล์ในระบบไฟล์

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
path สตริง หรือ Label หรือ path ต้องระบุ
เส้นทางของไฟล์ที่จะอ่าน

report_progress

None module_ctx.report_progress(status='')

อัปเดตสถานะความคืบหน้าสำหรับการดึงข้อมูลส่วนขยายของที่เก็บหรือโมดูลนี้

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
status string; ค่าเริ่มต้นคือ ''
สตริงที่อธิบายสถานะปัจจุบันของความคืบหน้าในการดึงข้อมูล

root_module_has_non_dev_dependency

bool module_ctx.root_module_has_non_dev_dependency

ดูว่าโมดูลรูทใช้ส่วนขยายนี้เป็นการขึ้นต่อกันที่ไม่ใช่การพัฒนาหรือไม่

ไหน

path module_ctx.which(program)

แสดงเส้นทางของโปรแกรมที่เกี่ยวข้อง หรือ None หากไม่มีโปรแกรมดังกล่าวในเส้นทาง

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
program ต้องระบุ
โปรแกรมที่จะค้นหาในเส้นทาง
อาจส่งคืน None