บริบทของส่วนขยายโมดูลที่มีฟังก์ชันตัวช่วยและข้อมูลเกี่ยวกับแท็กที่เกี่ยวข้องในกราฟความเกี่ยวข้อง คุณจะได้รับออบเจ็กต์ module_ctx เป็นอาร์กิวเมนต์ของฟังก์ชัน implementation
เมื่อสร้างส่วนขยายของโมดูล
สมาชิก
- download
- download_and_extract
- execute
- extension_metadata
- ไฟล์
- getenv
- is_dev_dependency
- modules
- ระบบปฏิบัติการ
- path
- อ่าน
- report_progress
- root_module_has_non_dev_dependency
- watch
- ซึ่ง
ดาวน์โหลด
unknown module_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', block=True)ดาวน์โหลดไฟล์ไปยังเส้นทางเอาต์พุตสำหรับ URL ที่ระบุ และแสดงผล Struct ที่มี
success
ซึ่งเป็นแฟล็ก true
หากดาวน์โหลดสำเร็จ และหากดาวน์โหลดสำเร็จ จะแฮชของไฟล์ที่มีช่อง sha256
และ integrity
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
url
|
สตริง หรือ Iterable ของ สตริง
ต้องระบุ รายการ URL มิเรอร์ที่อ้างอิงไฟล์เดียวกัน |
output
|
สตริง หรือป้ายกำกับ หรือเส้นทาง
ค่าเริ่มต้นคือ '' เส้นทางไปยังไฟล์เอาต์พุตซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ |
sha256
|
ค่าเริ่มต้นคือ '' แฮช SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับแฮช SHA-256 ของไฟล์ที่ดาวน์โหลด การละเว้น SHA-256 เป็นความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง ในกรณีที่ดีที่สุด การละเว้นช่องนี้จะทำให้บิลด์ของคุณไม่เสถียร การตั้งค่านี้ไม่บังคับ แต่จะช่วยให้การพัฒนาง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง |
executable
|
ค่าเริ่มต้นคือ False ตั้งค่าสถานะไฟล์ปฏิบัติการในไฟล์ที่สร้างขึ้นเป็น "เท็จ" โดยค่าเริ่มต้น |
allow_fail
|
ค่าเริ่มต้นคือ False หากตั้งค่าไว้ ระบบจะระบุข้อผิดพลาดในค่าที่แสดงแทนที่จะแสดงข้อผิดพลาดสำหรับการดาวน์โหลดที่ไม่สําเร็จ |
canonical_id
|
ค่าเริ่มต้นคือ '' หากตั้งค่าไว้ ระบบจะจำกัด Hit ของแคชไว้เฉพาะในกรณีที่มีการเพิ่มไฟล์ลงในแคชด้วยรหัสแคนนอนิกเดียวกัน |
auth
|
ค่าเริ่มต้นคือ {} Dict ที่ไม่บังคับซึ่งระบุข้อมูลการตรวจสอบสิทธิ์สําหรับ URL บางรายการ |
headers
|
ค่าเริ่มต้นคือ {} Dict ที่ไม่บังคับซึ่งระบุส่วนหัว HTTP สําหรับ URL ทั้งหมด |
integrity
|
ค่าเริ่มต้นคือ '' ค่าการตรวจสอบผลรวมที่คาดไว้ของไฟล์ที่ดาวน์โหลดในรูปแบบ Subresource Integrity ซึ่งต้องตรงกับ checksum ของไฟล์ที่ดาวน์โหลด การละเว้นการตรวจสอบผลรวมเป็นความเสี่ยงด้านความปลอดภัย เนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง ในกรณีที่ดีที่สุด การละเว้นช่องนี้จะทำให้บิลด์ของคุณไม่เสถียร การตั้งค่านี้ไม่บังคับ แต่จะช่วยให้การพัฒนาง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง |
block
|
ค่าเริ่มต้นคือ True หากตั้งค่าเป็นเท็จ การเรียกจะแสดงผลทันทีและแสดงผลโทเค็นที่มีเมธอดเดียว wait() ซึ่งจะบล็อกจนกว่าการดาวน์โหลดจะเสร็จสมบูรณ์และแสดงผลค่าที่แสดงผลตามปกติหรือแสดงข้อผิดพลาดตามปกติแทนค่าที่แสดงผลตามปกติ |
download_and_extract
struct module_ctx.download_and_extract(url, output='', sha256='', type='', stripPrefix='', allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', rename_files={})ดาวน์โหลดไฟล์ไปยังเส้นทางเอาต์พุตสำหรับ URL ที่ระบุ แตกไฟล์ออกมา และแสดงผล Struct ที่มี
success
แฟล็กซึ่งเป็น true
หากดาวน์โหลดสำเร็จ และหากดาวน์โหลดสำเร็จ จะแฮชของไฟล์ที่มีช่อง sha256
และ integrity
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
url
|
string หรือทำซ้ำได้ของสตริง
ต้องระบุ รายการ URL แบบมิเรอร์ที่อ้างอิงไฟล์เดียวกัน |
output
|
สตริง หรือ ป้ายกำกับ หรือ เส้นทาง
ค่าเริ่มต้นคือ '' เส้นทางไปยังไดเรกทอรีที่จะแตกไฟล์เก็บถาวร โดยสัมพันธ์กับไดเรกทอรีที่เก็บ |
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
|
ค่าเริ่มต้นคือ '' หากตั้งค่าไว้ ระบบจะจำกัด Hit ของแคชไว้เฉพาะในกรณีที่มีการเพิ่มไฟล์ลงในแคชด้วยรหัสแคนนอนิกเดียวกัน |
auth
|
ค่าเริ่มต้นคือ {} Dict ที่ไม่บังคับซึ่งระบุข้อมูลการตรวจสอบสิทธิ์สําหรับ URL บางรายการ |
headers
|
ค่าเริ่มต้นคือ {} Dict ที่ไม่บังคับซึ่งระบุส่วนหัว HTTP สําหรับ URL ทั้งหมด |
integrity
|
ค่าเริ่มต้นคือ '' ค่าการตรวจสอบผลรวมที่คาดไว้ของไฟล์ที่ดาวน์โหลดในรูปแบบ Subresource 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, reproducible=False)สร้างออบเจ็กต์ทึบแสงที่แสดงผลจากฟังก์ชันการใช้งานของส่วนขยายโมดูลเพื่อระบุข้อมูลเมตาเกี่ยวกับที่เก็บข้อมูลที่ส่วนขยายสร้างขึ้นให้กับ Bazel
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
root_module_direct_deps
|
ลําดับของ สตริง หรือ สตริง หรือ None
ค่าเริ่มต้นคือ None ชื่อที่เก็บข้อมูลที่ส่วนขยายถือว่ามีความเกี่ยวข้องโดยตรงกับโมดูลรูท หากโมดูลรูทนำเข้าที่เก็บเพิ่มเติมหรือไม่นำเข้าที่เก็บเหล่านี้ทั้งหมดผ่าน use_repo ทาง Bazel จะพิมพ์คำเตือนเมื่อมีการประเมินส่วนขยาย โดยสั่งให้ผู้ใช้เรียกใช้ bazel mod tidy เพื่อแก้ไขการเรียกใช้ use_repo โดยอัตโนมัติ หากหนึ่งใน หากมีการระบุ คุณสามารถตั้งค่า |
root_module_direct_dev_deps
|
ลําดับของ สตริง หรือ สตริง หรือ None
ค่าเริ่มต้นคือ None ชื่อที่เก็บข้อมูลที่ส่วนขยายถือว่ามีความเกี่ยวข้องโดยตรงกับนักพัฒนาซอฟต์แวร์ของโมดูลรูท หากโมดูลรูทนําเข้าที่เก็บข้อมูลเพิ่มเติมหรือไม่นําเข้าที่เก็บเหล่านี้ทั้งหมดผ่าน use_repo ในพร็อกซีส่วนขยายที่สร้างด้วย use_extension(..., dev_dependency = True) ทาง Bazel จะพิมพ์คําเตือนเมื่อประเมินส่วนขยาย โดยแจ้งให้ผู้ใช้เรียกใช้ bazel mod tidy เพื่อแก้ไขการเรียกใช้ use_repo โดยอัตโนมัติ หากมีการระบุ คุณสามารถตั้งค่า |
reproducible
|
bool;
ค่าเริ่มต้นคือ False ระบุว่าส่วนขยายโมดูลนี้ช่วยให้มั่นใจว่าจะทำซ้ำได้อย่างสมบูรณ์ จึงไม่ควรจัดเก็บไว้ในไฟล์ล็อก |
ไฟล์
None
module_ctx.file(path, content='', executable=True, legacy_utf8=True)
สร้างไฟล์ในไดเรกทอรีที่เก็บด้วยเนื้อหาที่ระบุ
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
path
|
สตริง หรือป้ายกำกับ หรือเส้นทาง
ต้องระบุ เส้นทางของไฟล์ที่จะสร้างซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ |
content
|
ค่าเริ่มต้นคือ '' เนื้อหาของไฟล์ที่จะสร้าง ซึ่งจะว่างเปล่าโดยค่าเริ่มต้น |
executable
|
ค่าเริ่มต้นคือ True ตั้งค่า Flag ที่ใช้เรียกใช้ได้ในไฟล์ที่สร้าง โดยค่าเริ่มต้นจะเป็น True |
legacy_utf8
|
ค่าเริ่มต้นคือ True เข้ารหัสเนื้อหาไฟล์เป็น UTF-8 โดยค่าเริ่มต้นจะเป็น "จริง" เวอร์ชันในอนาคตจะเปลี่ยนค่าเริ่มต้นและนำพารามิเตอร์นี้ออก |
getenv
string module_ctx.getenv(name, default=None)แสดงผลค่าของตัวแปรสภาพแวดล้อม
name
เป็นสตริงหากมี หรือ default
หากไม่มีเมื่อสร้างแบบเพิ่มทีละน้อย การเปลี่ยนแปลงค่าของตัวแปรที่มีชื่อตาม name
จะทําให้ระบบดึงข้อมูลพื้นที่เก็บข้อมูลนี้อีกครั้ง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
name
|
string;
ต้องระบุ ชื่อของตัวแปรสภาพแวดล้อมที่ต้องการ |
default
|
สตริง หรือ None
ค่าเริ่มต้นคือ None ค่าเริ่มต้นที่จะแสดงหากไม่พบ "ชื่อ" |
None
is_dev_dependency
bool module_ctx.is_dev_dependency(tag)แสดงผลว่ามีการระบุแท็กที่ระบุในผลลัพธ์ของการเรียก use_extension ด้วย
devDependency = True
หรือไม่
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
tag
|
bazel_module_tag;
ต้องระบุ เป็นแท็กที่ได้มาจาก bazel_module.tags |
โมดูล
list module_ctx.modulesรายการโมดูล Bazel ทั้งหมดในกราฟทรัพยากร Dependency ภายนอกที่ใช้ส่วนขยายโมดูลนี้ โดยแต่ละรายการจะเป็นออบเจ็กต์ bazel_module ที่แสดงแท็กทั้งหมดที่ระบุไว้สําหรับส่วนขยายนี้ การทำซ้ำของพจนานุกรมนี้รับประกันว่าจะเหมือนกับการค้นหาแบบเริ่มจากความกว้างที่เริ่มต้นจากโมดูลรูท
os
repository_os module_ctx.osโครงสร้างสําหรับเข้าถึงข้อมูลจากระบบ
เส้นทาง
path module_ctx.path(path)แสดงผลเส้นทางจากสตริง ป้ายกำกับ หรือเส้นทาง หากเส้นทางเป็นแบบสัมพัทธ์ ระบบจะแก้ไขเส้นทางนั้นตามไดเรกทอรีที่เก็บ หากเส้นทางเป็นป้ายกำกับ ระบบจะเปลี่ยนเส้นทางเป็นเส้นทางของไฟล์ที่เกี่ยวข้อง โปรดทราบว่าระบบจะเรียกใช้ที่เก็บระยะไกลในระหว่างระยะการวิเคราะห์ จึงไม่สามารถขึ้นอยู่กับผลลัพธ์เป้าหมาย (ป้ายกำกับควรชี้ไปยังไฟล์ที่ไม่ได้สร้างขึ้น) หากเส้นทางเป็นเส้นทาง ระบบจะแสดงผลเส้นทางตามที่เป็น
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
path
|
string หรือ Label หรือ path
ต้องระบุ สตริง ป้ายกำกับ หรือเส้นทางที่จะใช้สร้างเส้นทาง |
อ่าน
string module_ctx.read(path, *, watch='auto')อ่านเนื้อหาของไฟล์ในระบบไฟล์
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
path
|
สตริง หรือ ป้ายกำกับ หรือ เส้นทาง
ต้องระบุ เส้นทางของไฟล์ที่จะอ่าน |
watch
|
ค่าเริ่มต้นคือ 'auto' เพื่อระบุว่าจะตรวจสอบไฟล์หรือไม่ อาจเป็นสตริง "yes", "no" หรือ "auto" การส่งผ่าน "yes" จะเหมือนกับการเรียกใช้เมธอด watch() ทันที การส่ง "no" จะไม่ถือว่าเป็นการดูไฟล์ การส่ง "auto" จะพยายามดูไฟล์ต่อเมื่อไฟล์ถูกกฎหมายเท่านั้น (โปรดดูข้อมูลเพิ่มเติมในเอกสารของ watch()
|
report_progress
None
module_ctx.report_progress(status='')
อัปเดตสถานะความคืบหน้าในการดึงข้อมูลของที่เก็บหรือส่วนขยายโมดูลนี้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
status
|
สตริง
ค่าเริ่มต้นคือ '' สตริงที่อธิบายสถานะปัจจุบันของกระบวนการดึงข้อมูล |
root_module_has_non_dev_dependency
bool module_ctx.root_module_has_non_dev_dependencyโมดูลรูทใช้ส่วนขยายนี้เป็นทรัพยากร Dependency ที่ไม่มีการพัฒนาหรือไม่
นาฬิกา
None
module_ctx.watch(path)
บอกให้ Bazel คอยตรวจหาการเปลี่ยนแปลงในเส้นทางที่ระบุ ไม่ว่าเส้นทางนั้นจะมีอยู่หรือไม่ หรือเป็นไฟล์หรือไดเรกทอรี การเปลี่ยนแปลงไฟล์หรือไดเรกทอรีจะทำให้ที่เก็บหรือส่วนขยายโมดูลนี้ใช้งานไม่ได้ และจะทำให้ระบบดึงข้อมูลหรือประเมินอีกครั้งในครั้งถัดไป"การเปลี่ยนแปลง" รวมถึงการเปลี่ยนแปลงเนื้อหาของไฟล์ (หากเส้นทางเป็นไฟล์) หากเส้นทางเคยเป็นไฟล์แต่ตอนนี้เป็นไดเรกทอรี หรือในทางกลับกัน และหากเส้นทางเริ่มหรือหยุดมีอยู่ โปรดทราบว่าการดำเนินการนี้ไม่รวมการเปลี่ยนแปลงไฟล์ใดๆ ในไดเรกทอรีหากเส้นทางเป็นไดเรกทอรี โปรดใช้ path.readdir()
แทน
โปรดทราบว่าการพยายามเฝ้าดูเส้นทางภายในที่เก็บข้อมูลที่ดึงข้อมูลอยู่หรือภายในไดเรกทอรีทํางานของส่วนขยายโมดูลปัจจุบันจะทำให้เกิดข้อผิดพลาด ส่วนขยายโมดูลที่พยายามเฝ้าดูเส้นทางนอกพื้นที่ทํางาน Bazel ปัจจุบันก็จะทำให้เกิดข้อผิดพลาดเช่นกัน
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
path
|
สตริง หรือป้ายกำกับ หรือเส้นทาง
ต้องระบุ เส้นทางของไฟล์ที่จะเฝ้าดู |
ไหน
path module_ctx.which(program)แสดงผลเส้นทางของโปรแกรมที่เกี่ยวข้อง หรือแสดงผล None หากไม่มีโปรแกรมดังกล่าวในเส้นทาง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
program
|
ต้องระบุ โปรแกรมที่จะค้นหาในเส้นทาง |
None