กฎ
sh_binary
sh_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, licenses, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
ใช้กฎ sh_binary
เพื่อประกาศสคริปต์เชลล์ที่สั่งการได้
(sh_binary
เป็นคำที่สะกดผิด: เอาต์พุตอาจไม่ใช่ไบนารีเสมอไป) กฎนี้จะช่วยให้
มีการสร้างทรัพยากร Dependency ทั้งหมดและปรากฏในพื้นที่ runfiles
ขณะดำเนินการ
เราขอแนะนำให้คุณตั้งชื่อกฎ sh_binary()
หลังชื่อของสคริปต์ลบด้วย
ส่วนขยาย (เช่น .sh
); ชื่อกฎและชื่อไฟล์ต้องแตกต่างกัน
sh_binary
เคารพหน้าม้า ดังนั้นสามารถใช้ล่ามใดก็ได้ที่มีอยู่ (เช่น
#!/bin/zsh
)
ตัวอย่าง
สำหรับสคริปต์ Shell แบบง่ายที่ไม่มีทรัพยากร Dependency และไฟล์ข้อมูลบางส่วน ให้ทำดังนี้
sh_binary( name = "foo", srcs = ["foo.sh"], data = glob(["datafiles/*.txt"]), )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
deps
|
deps
ที่แอตทริบิวต์ทั่วไปที่กำหนดโดย
กฎการสร้างส่วนใหญ่
ควรใช้แอตทริบิวต์นี้เพื่อแสดงกฎ |
srcs
|
แอตทริบิวต์นี้ต้องเป็นรายการ Singleton ซึ่งมีองค์ประกอบที่เป็นสคริปต์ Shell
สคริปต์นี้ต้องเป็นไฟล์ปฏิบัติการและอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น
ไฟล์อื่นๆ ทั้งหมดที่ต้องใช้ขณะรันไทม์ (ไม่ว่าจะเป็นสคริปต์หรือข้อมูล) ควรเข้าไปอยู่ใน
|
sh_library
sh_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
การใช้งานหลักของกฎนี้คือการรวมตรรกะ
"ห้องสมุด" ที่ประกอบด้วยสคริปต์ที่เกี่ยวข้อง—โปรแกรมใน
ภาษาที่แปลโดยอินเทอร์พรีเตอร์ที่ไม่ต้องมีการรวบรวมหรือเชื่อมโยง
เช่น Bourne Shell และข้อมูลที่โปรแกรมเหล่านั้นต้องการ
รันไทม์ "ห้องสมุด" ดังกล่าว สามารถใช้จาก
แอตทริบิวต์ data
ของรายการเดียวหรือ
กฎ sh_binary
ข้อเพิ่มเติม
คุณสามารถใช้กฎ filegroup
เพื่อรวบรวมข้อมูล
ในภาษาโปรแกรมที่แปลโดยอินเทอร์พรีเตอร์
ความแตกต่างระหว่าง "รหัส" และ "data": อย่างไรก็ตาม โปรแกรมจะ
แค่ "ข้อมูล" จากมุมมองของล่าม ด้วยเหตุนี้
กฎข้อนี้มีแอตทริบิวต์ 3 ประเภทซึ่งโดยพื้นฐานแล้วเหมือนกันทั้งหมด
srcs
, deps
และ data
การใช้งานในปัจจุบันไม่ได้แยกความแตกต่างระหว่างองค์ประกอบของรายการเหล่านี้
แอตทริบิวต์ทั้ง 3 รายการจะยอมรับกฎ ไฟล์แหล่งที่มา และไฟล์ที่สร้างขึ้น
อย่างไรก็ตาม คุณควรใช้แอตทริบิวต์ตามวัตถุประสงค์ปกติ (เช่นเดียวกับกฎอื่นๆ)
ตัวอย่าง
sh_library( name = "foo", data = [ ":foo_service_script", # an sh_binary with srcs ":deploy_foo", # another sh_binary with srcs ], )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
deps
|
deps
ที่แอตทริบิวต์ทั่วไปที่กำหนดโดย
กฎการสร้างส่วนใหญ่
ควรใช้แอตทริบิวต์นี้เพื่อแสดงกฎ |
srcs
|
แอตทริบิวต์นี้ควรใช้เพื่อแสดงรายการไฟล์แหล่งที่มาของสคริปต์ Shell ที่เป็นของ
ไลบรารีนี้ สคริปต์โหลดสคริปต์อื่นๆ ได้โดยใช้ |
sh_test
sh_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, licenses, local, restricted_to, shard_count, size, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
กฎ sh_test()
จะสร้างการทดสอบที่เขียนเป็นสคริปต์ Shell ของ Bourne
โปรดดู แอตทริบิวต์ร่วมของกฎการทดสอบทั้งหมด (*_test)
ตัวอย่าง
sh_test( name = "foo_integration_test", size = "small", srcs = ["foo_integration_test.sh"], deps = [":foo_sh_lib"], data = glob(["testdata/*.txt"]), )
อาร์กิวเมนต์
Attributes | |
---|---|
name |
ชื่อที่ไม่ซ้ำกันสำหรับเป้าหมายนี้ |
deps
|
deps
ที่แอตทริบิวต์ทั่วไปที่กำหนดโดย
กฎการสร้างส่วนใหญ่
ควรใช้แอตทริบิวต์นี้เพื่อแสดงกฎ |
srcs
|
แอตทริบิวต์นี้ต้องเป็นรายการ Singleton ซึ่งมีองค์ประกอบที่เป็นสคริปต์ Shell
สคริปต์นี้ต้องเป็นไฟล์ปฏิบัติการและอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น
ไฟล์อื่นๆ ทั้งหมดที่ต้องใช้ขณะรันไทม์ (ไม่ว่าจะเป็นสคริปต์หรือข้อมูล) ควรเข้าไปอยู่ใน
|