บริบทของส่วนขยายโมดูลที่มีฟังก์ชันตัวช่วยและข้อมูลเกี่ยวกับแท็กที่เกี่ยวข้องในกราฟความเกี่ยวข้อง คุณจะได้รับออบเจ็กต์ module_ctx เป็นอาร์กิวเมนต์ของฟังก์ชัน implementation
เมื่อสร้างส่วนขยายของโมดูล
สมาชิก
- ดาวน์โหลด
- download_and_extract
- execute
- extension_metadata
- แยก
- file
- getenv
- is_dev_dependency
- โมดูล
- ระบบปฏิบัติการ
- เส้นทาง
- 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
ซึ่งเป็น Flag ที่เป็น true
หากการดาวน์โหลดเสร็จสมบูรณ์ และหากสำเร็จ ระบบจะแสดงแฮชของไฟล์ที่มีช่อง sha256
และ integrity
เมื่อ sha256
หรือ integrity
ระบุโดยผู้ใช้ เราขอแนะนำให้ตั้งค่า canonical_id
ที่ชัดเจน เช่น get_default_canonical_id
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
url
|
สตริง หรือ Iterable ของ สตริง
ต้องระบุ รายการ URL มิเรอร์ที่อ้างอิงไฟล์เดียวกัน |
output
|
สตริง หรือป้ายกำกับ หรือเส้นทาง
ค่าเริ่มต้นคือ '' เส้นทางไปยังไฟล์เอาต์พุตซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ |
sha256
|
ค่าเริ่มต้นคือ '' แฮช SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับแฮช SHA-256 ของไฟล์ที่ดาวน์โหลด การละเว้น SHA-256 เป็นความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง ในกรณีที่ดีที่สุด การละเว้นช่องนี้จะทำให้บิลด์ของคุณไม่เสถียร การตั้งค่านี้ไม่บังคับ แต่จะช่วยให้การพัฒนาง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากมี ระบบจะตรวจสอบแคชของที่เก็บเพื่อหาไฟล์ที่มีแฮชที่ระบุก่อน และจะดำเนินการดาวน์โหลดหากไม่พบไฟล์ในแคชเท่านั้น หลังจากดาวน์โหลดสำเร็จ ระบบจะเพิ่มไฟล์ลงในแคช |
executable
|
ค่าเริ่มต้นคือ False ตั้งค่าสถานะไฟล์ปฏิบัติการในไฟล์ที่สร้างขึ้นเป็น "เท็จ" โดยค่าเริ่มต้น |
allow_fail
|
ค่าเริ่มต้นคือ False หากตั้งค่าไว้ ให้ระบุข้อผิดพลาดในมูลค่าการแสดงผลแทนการเพิ่มข้อผิดพลาดสำหรับการดาวน์โหลดที่ไม่สำเร็จ |
canonical_id
|
ค่าเริ่มต้นคือ '' หากตั้งค่าไว้ ให้จำกัดการพบแคชเฉพาะกรณีที่เพิ่มไฟล์ลงในแคชด้วยรหัส Canonical เดียวกัน โดยค่าเริ่มต้น การแคชจะใช้การตรวจสอบผลรวม ( sha256 หรือ integrity )
|
auth
|
ค่าเริ่มต้นคือ {} คำสั่งที่ไม่บังคับซึ่งระบุข้อมูลการตรวจสอบสิทธิ์สำหรับ URL บางรายการ |
headers
|
ค่าเริ่มต้นคือ {} Dict ที่ไม่บังคับซึ่งระบุส่วนหัว HTTP สําหรับ URL ทั้งหมด |
integrity
|
ค่าเริ่มต้นคือ '' ค่าการตรวจสอบผลรวมที่คาดไว้ของไฟล์ที่ดาวน์โหลดในรูปแบบ Subresource Integrity ซึ่งต้องตรงกับการตรวจสอบผลรวมของไฟล์ที่ดาวน์โหลด การละเว้นการตรวจสอบผลรวมเป็นความเสี่ยงด้านความปลอดภัย เนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง ในกรณีที่ดีที่สุด การละเว้นช่องนี้จะทำให้บิลด์ของคุณไม่เสถียร การตั้งค่านี้ไม่บังคับ แต่จะช่วยให้การพัฒนาง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชที่เก็บข้อมูลก่อนเพื่อหาไฟล์ที่มีการตรวจสอบผลรวมที่ระบุไว้ และจะพยายามดาวน์โหลดเฉพาะในกรณีที่ไม่พบไฟล์ดังกล่าวในแคช หลังจากดาวน์โหลดสำเร็จ ระบบจะเพิ่มไฟล์ลงในแคช |
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={})
success
ซึ่งเป็น Flag ที่เป็น true
หากการดาวน์โหลดเสร็จสมบูรณ์ และหากสำเร็จ ระบบจะแสดงแฮชของไฟล์ที่มีช่อง sha256
และ integrity
เมื่อ sha256
หรือ integrity
ระบุโดยผู้ใช้ เราขอแนะนำให้ตั้งค่า canonical_id
ที่ชัดเจน เช่น get_default_canonical_id
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
url
|
สตริง หรือ Iterable ของ สตริง
ต้องระบุ รายการ URL มิเรอร์ที่อ้างอิงไฟล์เดียวกัน |
output
|
string หรือ Label หรือ path
ค่าเริ่มต้นคือ '' เส้นทางไปยังไดเรกทอรีที่ระบบจะคลายการแพคข้อมูลที่เก็บถาวรซึ่งสัมพันธ์กับไดเรกทอรีที่เก็บ |
sha256
|
ค่าเริ่มต้นคือ '' แฮช SHA-256 ที่คาดไว้ของไฟล์ที่ดาวน์โหลด ซึ่งต้องตรงกับแฮช SHA-256 ของไฟล์ที่ดาวน์โหลด การละเว้น SHA-256 เป็นความเสี่ยงด้านความปลอดภัยเนื่องจากไฟล์ระยะไกลอาจมีการเปลี่ยนแปลง ในกรณีที่ดีที่สุด การละเว้นช่องนี้จะทำให้บิลด์ของคุณไม่เสถียร การตั้งค่านี้ไม่บังคับ แต่จะช่วยให้การพัฒนาง่ายขึ้น แต่ควรตั้งค่าก่อนจัดส่ง หากระบุไว้ ระบบจะตรวจสอบแคชที่เก็บข้อมูลก่อนเพื่อหาไฟล์ที่มีแฮชที่ระบุ และจะพยายามดาวน์โหลดก็ต่อเมื่อไม่พบไฟล์ดังกล่าวในแคช หลังจากดาวน์โหลดสำเร็จ ระบบจะเพิ่มไฟล์ลงในแคช |
type
|
ค่าเริ่มต้นคือ '' ประเภทไฟล์เก็บถาวรของไฟล์ที่ดาวน์โหลด โดยค่าเริ่มต้น ระบบจะกำหนดประเภทไฟล์จากนามสกุลของ URL หากไฟล์ไม่มีนามสกุล คุณสามารถระบุ "zip", "jar", "war", "aar", "nupkg", "tar", "tar.gz", "tgz", "tar.xz", "txz", ".tar.zst", ".tzst", "tar.bz2", ".tbz", ".ar" หรือ ".deb" ที่นี่อย่างชัดเจน |
stripPrefix
|
ค่าเริ่มต้นคือ '' คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยก ที่เก็บถาวรจำนวนมากมีไดเรกทอรีระดับบนสุดที่มีไฟล์ทั้งหมดในที่เก็บถาวร ฟิลด์นี้ใช้เพื่อตัดคำนำหน้านี้ออกจากไฟล์ที่แตกไฟล์ได้โดยไม่ต้องระบุคำนำหน้านี้ซ้ำๆ ใน build_file
|
allow_fail
|
ค่าเริ่มต้นคือ False หากตั้งค่าไว้ ระบบจะระบุข้อผิดพลาดในค่าที่แสดงแทนที่จะแสดงข้อผิดพลาดสำหรับการดาวน์โหลดที่ไม่สําเร็จ |
canonical_id
|
ค่าเริ่มต้นคือ '' หากตั้งค่าไว้ ให้จำกัดการพบแคชไว้เฉพาะกรณีที่เพิ่มไฟล์ลงในแคชที่มีรหัส Canonical เดียวกัน โดยค่าเริ่มต้น การแคชจะใช้การตรวจสอบผลรวม" ( sha256 หรือ integrity )
|
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)
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
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.extract(archive, output='', stripPrefix='', *, rename_files={}, watch_archive='auto')
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
archive
|
สตริง หรือ ป้ายกำกับ หรือ เส้นทาง
ต้องระบุ เส้นทางไปยังไฟล์เก็บถาวรที่จะแตกไฟล์ โดยสัมพันธ์กับไดเรกทอรีที่เก็บ |
output
|
สตริง หรือ ป้ายกำกับ หรือ เส้นทาง
ค่าเริ่มต้นคือ '' เส้นทางไปยังไดเรกทอรีที่จะแตกไฟล์เก็บถาวร โดยสัมพันธ์กับไดเรกทอรีที่เก็บ |
stripPrefix
|
ค่าเริ่มต้นคือ '' คำนำหน้าไดเรกทอรีที่จะตัดออกจากไฟล์ที่แยก ที่เก็บถาวรจำนวนมากมีไดเรกทอรีระดับบนสุดที่มีไฟล์ทั้งหมดในที่เก็บถาวร ฟิลด์นี้ใช้เพื่อตัดคำนำหน้านี้ออกจากไฟล์ที่แตกไฟล์ได้โดยไม่ต้องระบุคำนำหน้านี้ซ้ำๆ ใน build_file
|
rename_files
|
ค่าเริ่มต้นคือ {} คำสั่ง (ไม่บังคับ) ที่ระบุไฟล์ที่จะเปลี่ยนชื่อระหว่างการดึงข้อมูล ระบบจะเปลี่ยนชื่อรายการที่เก็บถาวรซึ่งมีชื่อตรงกับคีย์เป็นค่านั้นๆ ก่อนที่จะปรับคำนำหน้าไดเรกทอรี ซึ่งสามารถใช้เพื่อแตกไฟล์ที่เก็บซึ่งมีชื่อไฟล์ที่ไม่ใช่ Unicode หรือมีไฟล์ที่จะแตกไปยังเส้นทางเดียวกันในระบบไฟล์ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ |
watch_archive
|
ค่าเริ่มต้นคือ 'auto' เลือกว่าจะดูไฟล์ที่เก็บถาวรหรือไม่ อาจเป็นสตริง "yes", "no" หรือ "auto" การส่งค่า "yes" เทียบเท่ากับการเรียกใช้เมธอด watch() ทันที การส่งค่า "no" จะไม่พยายามเฝ้าดูไฟล์ การส่งค่า "auto" จะพยายามเฝ้าดูไฟล์ก็ต่อเมื่อดำเนินการได้อย่างถูกกฎหมายเท่านั้น (ดูข้อมูลเพิ่มเติมในเอกสาร watch() )
|
ไฟล์
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;
required ชื่อตัวแปรสภาพแวดล้อมที่ต้องการ |
default
|
สตริง หรือ None
ค่าเริ่มต้นคือ None ค่าเริ่มต้นที่จะแสดงหากไม่พบ name
|
None
is_dev_dependency
bool module_ctx.is_dev_dependency(tag)
devDependency = True
หรือไม่
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
tag
|
bazel_module_tag;
ต้องระบุ แท็กที่ได้รับจาก bazel_module.tags |
โมดูล
list module_ctx.modules
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
|
สตริง
ค่าเริ่มต้นคือ '' 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
|
สตริง หรือป้ายกำกับ หรือเส้นทาง
ต้องระบุ เส้นทางของไฟล์ที่จะเฝ้าดู |
ไหน
path module_ctx.which(program)
path
ของโปรแกรมที่เกี่ยวข้อง หรือ None
หากไม่มีโปรแกรมดังกล่าวในเส้นทาง
พารามิเตอร์
พารามิเตอร์ | คำอธิบาย |
---|---|
program
|
ต้องระบุ โปรแกรมเพื่อค้นหาในเส้นทาง |
None