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