บริบทของส่วนขยายโมดูลที่มีฟังก์ชันตัวช่วยและข้อมูลเกี่ยวกับแท็กที่เกี่ยวข้องในกราฟการอ้างอิง คุณจะได้รับออบเจ็กต์ module_ctx เป็นอาร์กิวเมนต์ของฟังก์ชัน implementation
เมื่อสร้างส่วนขยายโมดูล
สมาชิก
- download
- download_and_extract
- execute
- extension_metadata
- extract
- ไฟล์
- getenv
- is_dev_dependency
- โมดูล
- os
- เส้นทาง
- read
- report_progress
- root_module_has_non_dev_dependency
- ดู
- ซึ่ง
ดาวน์โหลด
unknown module_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', block=True)
success
ซึ่งเป็นแฟล็กที่ true
หากดาวน์โหลดเสร็จสมบูรณ์ และหากดาวน์โหลดสำเร็จ แฮชของไฟล์ที่มีฟิลด์ sha256
และ integrity
เมื่อผู้ใช้ระบุ sha256
หรือ integrity
เราขอแนะนำอย่างยิ่งให้ตั้งค่า canonical_id
อย่างชัดเจน เช่น get_default_canonical_id
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
url
|
string หรือ Iterable ของ string
ต้องระบุ รายการ URL แบบมิเรอร์ที่อ้างอิงไฟล์เดียวกัน |
output
|
สตริง หรือ Label หรือ path
ค่าเริ่มต้นคือ '' เส้นทางไปยังไฟล์เอาต์พุตที่เกี่ยวข้องกับไดเรกทอรีที่เก็บ |
sha256
|
string;
ค่าเริ่มต้นคือ '' แฮช SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับแฮช SHA-256 ของไฟล์ที่ดาวน์โหลด การละเว้น SHA-256 ถือเป็นความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์มิติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชของที่เก็บก่อนเพื่อหาไฟล์ที่มีแฮชที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ในแคช หลังจากดาวน์โหลดสำเร็จแล้ว ระบบจะเพิ่มไฟล์ลงในแคช |
executable
|
bool;
ค่าเริ่มต้นคือ False ตั้งค่าสถานะที่เรียกใช้งานได้ในไฟล์ที่สร้างขึ้น โดยค่าเริ่มต้นจะเป็น false |
allow_fail
|
bool;
ค่าเริ่มต้นคือ False หากตั้งค่าไว้ ให้ระบุข้อผิดพลาดในค่าที่ส่งคืนแทนที่จะแจ้งข้อผิดพลาดสำหรับการดาวน์โหลดที่ไม่สำเร็จ |
canonical_id
|
string;
ค่าเริ่มต้นคือ '' หากตั้งค่าไว้ ให้จำกัดการเข้าชมที่แคชไว้เฉพาะกรณีที่เพิ่มไฟล์ลงในแคชด้วยรหัส Canonical เดียวกัน โดยค่าเริ่มต้น การแคชจะใช้ Checksum ( sha256 หรือ integrity )
|
auth
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมที่ไม่บังคับซึ่งระบุข้อมูลการตรวจสอบสิทธิ์สำหรับ URL บางรายการ |
headers
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมที่ไม่บังคับซึ่งระบุส่วนหัว HTTP สำหรับ URL ทั้งหมด |
integrity
|
string;
ค่าเริ่มต้นคือ '' ผลรวมตรวจสอบที่คาดไว้ของไฟล์ที่ดาวน์โหลดในรูปแบบ Subresource Integrity ต้องตรงกับผลรวมตรวจสอบของไฟล์ที่ดาวน์โหลด การละเว้นการตรวจสอบผลรวมมีความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์มิติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชของที่เก็บก่อนเพื่อหาไฟล์ที่มีผลรวมเช็คซัมที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ในแคช หลังจากดาวน์โหลดสำเร็จแล้ว ระบบจะเพิ่มไฟล์ลงในแคช |
block
|
bool;
ค่าเริ่มต้นคือ True หากตั้งค่าเป็น false การเรียกจะแสดงผลทันที และแทนที่จะเป็นค่าที่แสดงผลปกติ ระบบจะแสดงผลโทเค็นที่มีเมธอดเดียวคือ wait() ซึ่งจะบล็อกจนกว่าการดาวน์โหลดจะเสร็จสิ้นและแสดงผลค่าที่แสดงผลตามปกติหรือส่งข้อยกเว้นตามปกติ |
download_and_extract
struct module_ctx.download_and_extract(url, output='', sha256='', type='', strip_prefix='', allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', rename_files={})
success
ซึ่งเป็นแฟล็กที่แสดงเป็น true
หากดาวน์โหลดเสร็จสมบูรณ์ และหากสำเร็จ จะแสดงแฮชของไฟล์ที่มีฟิลด์ sha256
และ integrity
เมื่อผู้ใช้ระบุ sha256
หรือ integrity
เราขอแนะนำอย่างยิ่งให้ตั้งค่า canonical_id
อย่างชัดเจน เช่น get_default_canonical_id
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
url
|
string หรือ Iterable ของ string
ต้องระบุ รายการ URL แบบมิเรอร์ที่อ้างอิงไฟล์เดียวกัน |
output
|
string หรือ Label หรือ path
ค่าเริ่มต้นคือ '' เส้นทางไปยังไดเรกทอรีที่จะแตกไฟล์เก็บถาวร โดยอิงตามไดเรกทอรีที่เก็บ |
sha256
|
string;
ค่าเริ่มต้นคือ '' แฮช SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับแฮช SHA-256 ของไฟล์ที่ดาวน์โหลด การละเว้น SHA-256 ถือเป็นความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์มิติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชของที่เก็บก่อนเพื่อหาไฟล์ที่มีแฮชที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ในแคช หลังจากดาวน์โหลดสำเร็จแล้ว ระบบจะเพิ่มไฟล์ลงในแคช |
type
|
string;
ค่าเริ่มต้นคือ '' ประเภทที่เก็บถาวรของไฟล์ที่ดาวน์โหลด โดยค่าเริ่มต้น ระบบจะกำหนดประเภทที่เก็บถาวรจากส่วนขยายของไฟล์ใน URL หากไฟล์ไม่มีนามสกุล คุณสามารถระบุ "zip", "jar", "war", "aar", "nupkg", "tar", "tar.gz", "tgz", "tar.xz", "txz", ".tar.zst", ".tzst", "tar.bz2", ".tbz", ".ar" หรือ ".deb" ที่นี่ได้ |
strip_prefix
|
string;
ค่าเริ่มต้นคือ '' คำนำหน้าไดเรกทอรีที่จะนำออกจากไฟล์ที่แยกออกมา ที่เก็บถาวรจำนวนมากมี ไดเรกทอรีระดับบนสุดซึ่งมีไฟล์ทั้งหมดในที่เก็บถาวร ฟิลด์นี้ใช้เพื่อนำคำนำหน้านี้ออกจากไฟล์ที่แยกออกมาได้แทนที่จะต้อง ระบุคำนำหน้านี้ซ้ำๆ ใน build_file
เพื่อความเข้ากันได้ คุณอาจใช้พารามิเตอร์นี้ภายใต้ชื่อที่เลิกใช้งานแล้ว
|
allow_fail
|
bool;
ค่าเริ่มต้นคือ False หากตั้งค่าไว้ ให้ระบุข้อผิดพลาดในค่าที่ส่งคืนแทนที่จะแจ้งข้อผิดพลาดสำหรับการดาวน์โหลดที่ไม่สำเร็จ |
canonical_id
|
string;
ค่าเริ่มต้นคือ '' หากตั้งค่าไว้ ให้จำกัดการเข้าชมที่แคชไว้เฉพาะกรณีที่เพิ่มไฟล์ลงในแคชด้วยรหัส Canonical เดียวกัน โดยค่าเริ่มต้น การแคชจะใช้ผลรวมตรวจสอบ" ( sha256 หรือ integrity )
|
auth
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมที่ไม่บังคับซึ่งระบุข้อมูลการตรวจสอบสิทธิ์สำหรับ URL บางรายการ |
headers
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมที่ไม่บังคับซึ่งระบุส่วนหัว HTTP สำหรับ URL ทั้งหมด |
integrity
|
string;
ค่าเริ่มต้นคือ '' ผลรวมตรวจสอบที่คาดไว้ของไฟล์ที่ดาวน์โหลดในรูปแบบ Subresource Integrity ต้องตรงกับผลรวมตรวจสอบของไฟล์ที่ดาวน์โหลด การละเว้นการตรวจสอบผลรวมมีความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง การละเว้นฟิลด์นี้จะทำให้บิลด์ของคุณไม่เป็นแบบเฮอร์มิติก ไม่บังคับเพื่อช่วยให้การพัฒนาเป็นไปได้ง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชของที่เก็บก่อนเพื่อหาไฟล์ที่มีผลรวมเช็คซัมที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ในแคช หลังจากดาวน์โหลดสำเร็จแล้ว ระบบจะเพิ่มไฟล์ลงในแคช |
rename_files
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมที่ไม่บังคับซึ่งระบุไฟล์ที่จะเปลี่ยนชื่อระหว่างการแยก รายการที่เก็บถาวรซึ่งมีชื่อตรงกับคีย์จะได้รับการเปลี่ยนชื่อเป็นค่าก่อนที่จะมีการปรับคำนำหน้าไดเรกทอรี ซึ่งใช้เพื่อแยกไฟล์เก็บถาวรที่มีชื่อไฟล์ที่ไม่ใช่ Unicode หรือมีไฟล์ที่จะแยกไปยังเส้นทางเดียวกันในระบบไฟล์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้ |
ดำเนินการ
exec_result module_ctx.execute(arguments, timeout=600, environment={}, quiet=True, working_directory="")
timeout
(เป็นวินาที ค่าเริ่มต้นคือ 600 วินาที) เมธอดนี้จะแสดงผลexec_result
ที่มีเอาต์พุตของคำสั่ง คุณใช้แผนที่ environment
เพื่อลบล้างตัวแปรสภาพแวดล้อมบางอย่างที่จะส่งไปยังกระบวนการได้
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
arguments
|
sequence;
required List of arguments, the first element should be the path to the program to execute. |
timeout
|
int;
ค่าเริ่มต้นคือ 600 ระยะเวลาสูงสุดของคำสั่งเป็นวินาที (ค่าเริ่มต้นคือ 600 วินาที) |
environment
|
dict;
ค่าเริ่มต้นคือ {} บังคับให้ตั้งค่าตัวแปรสภาพแวดล้อมบางรายการเพื่อส่งไปยังกระบวนการ ค่าอาจเป็น None เพื่อนำตัวแปรสภาพแวดล้อมออก
|
quiet
|
bool;
ค่าเริ่มต้นคือ True หากควรพิมพ์ stdout และ stderr ไปยังเทอร์มินัล |
working_directory
|
string;
ค่าเริ่มต้นคือ "" ไดเรกทอรีการทำงานสำหรับการเรียกใช้คำสั่ง อาจเป็นแบบสัมพัทธ์กับรูทของที่เก็บหรือแบบสัมบูรณ์ก็ได้ ค่าเริ่มต้นคือรูทของที่เก็บ |
extension_metadata
extension_metadata module_ctx.extension_metadata(root_module_direct_deps=None, root_module_direct_dev_deps=None, reproducible=False)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
root_module_direct_deps
|
ลำดับของสตริง หรือสตริง หรือNone
ค่าเริ่มต้นคือ None ชื่อของที่เก็บที่ส่วนขยายถือว่าเป็นทรัพยากร Dependency โดยตรงของโมดูลรูท หากโมดูลรูทนำเข้าที่เก็บเพิ่มเติมหรือไม่นำเข้าที่เก็บทั้งหมดเหล่านี้ผ่าน use_repo Bazel จะพิมพ์คำเตือนเมื่อมีการประเมินส่วนขยาย โดยจะแนะนำให้ผู้ใช้เรียกใช้ bazel mod tidy เพื่อแก้ไขการเรียกใช้ use_repo โดยอัตโนมัติ หากมีข้อใดข้อหนึ่ง หากมีการระบุ คุณตั้งค่า |
root_module_direct_dev_deps
|
ลำดับของสตริง หรือสตริง หรือ None
ค่าเริ่มต้นคือ None ชื่อของที่เก็บที่ส่วนขยายถือว่าเป็นทรัพยากร Dependency สำหรับการพัฒนาโดยตรงของโมดูลรูท หากโมดูลรูทนำเข้าที่เก็บเพิ่มเติมหรือไม่ได้นำเข้าที่เก็บทั้งหมดเหล่านี้ผ่าน use_repo ในพร็อกซีส่วนขยายที่สร้างด้วย use_extension(..., dev_dependency = True) Bazel จะพิมพ์คำเตือนเมื่อมีการประเมินส่วนขยาย โดยแนะนำให้ผู้ใช้เรียกใช้ bazel mod tidy เพื่อแก้ไขการเรียก use_repo โดยอัตโนมัติ หากมีการระบุ คุณตั้งค่า |
reproducible
|
bool;
ค่าเริ่มต้นคือ False ระบุว่าส่วนขยายโมดูลนี้ช่วยให้มั่นใจได้ถึงความสามารถในการทำซ้ำที่สมบูรณ์ จึงไม่ควรจัดเก็บไว้ในไฟล์ล็อก |
ดึงข้อมูล
None
module_ctx.extract(archive, output='', strip_prefix='', *, rename_files={}, watch_archive='auto')
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
archive
|
string หรือ Label หรือ path
required เส้นทางไปยังที่เก็บถาวรที่จะแตกไฟล์ ซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ |
output
|
string หรือ Label หรือ path
ค่าเริ่มต้นคือ '' เส้นทางไปยังไดเรกทอรีที่จะแตกไฟล์เก็บถาวร ซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ |
strip_prefix
|
string;
ค่าเริ่มต้นคือ '' คำนำหน้าไดเรกทอรีที่จะนำออกจากไฟล์ที่แยกออกมา ที่เก็บถาวรจำนวนมากมี ไดเรกทอรีระดับบนสุดซึ่งมีไฟล์ทั้งหมดในที่เก็บถาวร ฟิลด์นี้ใช้เพื่อนำคำนำหน้านี้ออกจากไฟล์ที่แยกออกมาได้ แทนที่จะต้องระบุคำนำหน้านี้ซ้ำๆ ใน build_file
เพื่อความเข้ากันได้ คุณอาจใช้พารามิเตอร์นี้ภายใต้ชื่อที่เลิกใช้งานแล้ว
|
rename_files
|
dict;
ค่าเริ่มต้นคือ {} พจนานุกรมที่ไม่บังคับซึ่งระบุไฟล์ที่จะเปลี่ยนชื่อระหว่างการแยก รายการที่เก็บถาวรซึ่งมีชื่อตรงกับคีย์จะได้รับการเปลี่ยนชื่อเป็นค่าก่อนที่จะมีการปรับคำนำหน้าไดเรกทอรี ซึ่งใช้เพื่อแยกไฟล์เก็บถาวรที่มีชื่อไฟล์ที่ไม่ใช่ Unicode หรือมีไฟล์ที่จะแยกไปยังเส้นทางเดียวกันในระบบไฟล์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ได้ |
watch_archive
|
string;
ค่าเริ่มต้นคือ 'auto' ระบุว่าจะดูไฟล์ที่เก็บถาวรหรือไม่ อาจเป็นสตริง "yes", "no" หรือ "auto" การส่งค่า "yes" จะเทียบเท่ากับการเรียกใช้เมธอด watch() ทันที ส่วนการส่งค่า "no" จะไม่พยายามดูไฟล์ และการส่งค่า "auto" จะพยายามดูไฟล์เฉพาะเมื่อทำได้อย่างถูกต้องตามกฎหมายเท่านั้น (ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ watch() )
|
ไฟล์
None
module_ctx.file(path, content='', executable=True, legacy_utf8=False)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
path
|
สตริง หรือ Label หรือ path
ต้องระบุ เส้นทางของไฟล์ที่จะสร้าง ซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ |
content
|
สตริง
ค่าเริ่มต้นคือ '' เนื้อหาของไฟล์ที่จะสร้าง โดยค่าเริ่มต้นจะเป็นค่าว่าง |
executable
|
bool;
ค่าเริ่มต้นคือ True ตั้งค่าสถานะที่เรียกใช้งานได้ในไฟล์ที่สร้างขึ้น โดยค่าเริ่มต้นจะเป็นจริง |
legacy_utf8
|
bool;
ค่าเริ่มต้นคือ False ไม่มีการดำเนินการ พารามิเตอร์นี้เลิกใช้งานแล้วและจะนำออกใน Bazel เวอร์ชันถัดไป |
getenv
string module_ctx.getenv(name, default=None)
name
เป็นสตริงหากมี หรือ default
หากไม่มี เมื่อสร้างทีละรายการ การเปลี่ยนแปลงค่าของตัวแปรที่ตั้งชื่อโดย name
จะทําให้ระบบดึงข้อมูลที่เก็บนี้อีกครั้ง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
name
|
สตริง
ต้องระบุ ชื่อของตัวแปรสภาพแวดล้อมที่ต้องการ |
default
|
สตริง หรือ None
ค่าเริ่มต้นคือ None ค่าเริ่มต้นที่จะแสดงหากไม่พบ name
|
None
is_dev_dependency
bool module_ctx.is_dev_dependency(tag)
devDependency = True
หรือไม่
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
tag
|
bazel_module_tag;
required แท็กที่ได้จาก bazel_module.tags |
โมดูล
list module_ctx.modules
os
repository_os module_ctx.os
เส้นทาง
path module_ctx.path(path)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
path
|
string หรือ Label หรือ path
ต้องระบุstring , Label หรือ path ที่จะใช้สร้างเส้นทาง
|
อ่าน
string module_ctx.read(path, *, watch='auto')
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
path
|
สตริง หรือ Label หรือ path
ต้องระบุ เส้นทางของไฟล์ที่จะอ่าน |
watch
|
string;
ค่าเริ่มต้นคือ 'auto' ระบุว่าจะดูไฟล์หรือไม่ อาจเป็นสตริง "yes", "no" หรือ "auto" การส่งค่า "yes" จะเทียบเท่ากับการเรียกใช้เมธอด watch() ทันที ส่วนการส่งค่า "no" จะไม่พยายามดูไฟล์ และการส่งค่า "auto" จะพยายามดูไฟล์เฉพาะเมื่อทำได้อย่างถูกต้องตามกฎหมายเท่านั้น (ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ watch() )
|
report_progress
None
module_ctx.report_progress(status='')
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
status
|
string;
ค่าเริ่มต้นคือ '' string อธิบายสถานะปัจจุบันของความคืบหน้าในการดึงข้อมูล
|
root_module_has_non_dev_dependency
bool module_ctx.root_module_has_non_dev_dependency
นาฬิกา
None
module_ctx.watch(path)
"การเปลี่ยนแปลง" รวมถึงการเปลี่ยนแปลงเนื้อหาของไฟล์ (หากเส้นทางเป็นไฟล์) หากเส้นทางเคยเป็นไฟล์แต่ตอนนี้เป็นไดเรกทอรี หรือในทางกลับกัน และหากเส้นทางเริ่มหรือหยุดมีอยู่ โปรดทราบว่าการดำเนินการนี้ไม่รวมถึงการเปลี่ยนแปลงไฟล์ใดๆ ในไดเรกทอรีหากเส้นทางเป็นไดเรกทอรี หากต้องการทำเช่นนั้น ให้ใช้ path.readdir()
แทน
โปรดทราบว่าการพยายามดูเส้นทางภายในที่เก็บที่กำลังดึงข้อมูล หรือภายในไดเรกทอรีการทำงานของส่วนขยายโมดูลปัจจุบัน จะทำให้เกิดข้อผิดพลาด ส่วนขยายโมดูลที่พยายามดูเส้นทางนอกพื้นที่ทำงาน Bazel ปัจจุบันจะทำให้เกิดข้อผิดพลาดด้วย
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
path
|
string หรือ Label หรือ path
ต้องระบุ เส้นทางของไฟล์ที่จะดู |
ไหน
path module_ctx.which(program)
path
ของโปรแกรมที่เกี่ยวข้องหรือ None
หากไม่มีโปรแกรมดังกล่าวในเส้นทาง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
program
|
string;
required Program to find in the path. |
None