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