กฎ Shell

รายงานปัญหา ดูแหล่งที่มา

กฎ

ไบนารี

ดูแหล่งที่มาของกฎ
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 ใช้ในการประกาศสคริปต์ Shell ที่ดําเนินการได้ (sh_binary เป็นการให้ข้อมูลที่ไม่ถูกต้อง เนื่องจากเอาต์พุตไม่จําเป็นต้องเป็นไบนารี) กฎนี้ช่วยให้มั่นใจได้ว่าทรัพยากร Dependency ทั้งหมดสร้างขึ้นและปรากฏในพื้นที่ runfiles ขณะดําเนินการ เราขอแนะนําให้คุณตั้งชื่อกฎ sh_binary() หลังชื่อสคริปต์ลบด้วยส่วนขยาย (เช่น .sh) ชื่อกฎและชื่อไฟล์ต้องไม่ซ้ํากัน sh_binary ดําเนินการตามคําสั่งของ Shebang ดังนั้นจึงอาจมีการใช้ล่ามที่พร้อมใช้งาน (เช่น #!/bin/zsh)

ตัวอย่าง

สําหรับสคริปต์ Shell แบบง่ายที่ไม่มีทรัพยากร Dependency และไฟล์ข้อมูลบางรายการ ให้ทําดังนี้

sh_binary(
    name = "foo",
    srcs = ["foo.sh"],
    data = glob(["datafiles/*.txt"]),
)

อาร์กิวเมนต์

แอตทริบิวต์
name

Name; required

ชื่อที่ไม่ซ้ํากันสําหรับเป้าหมายนี้

deps

List of labels; optional

รายการเป้าหมาย "ไลบรารี" ที่จะรวมในเป้าหมายนี้ ดูความคิดเห็นทั่วไปเกี่ยวกับ deps ได้ที่แอตทริบิวต์ทั่วไปที่กําหนดโดยกฎบิลด์ส่วนใหญ่

แอตทริบิวต์นี้ควรใช้เพื่อระบุกฎ sh_library อื่นๆ ที่ให้ซอร์สโค้ดโปรแกรมที่ตีความตามโค้ดใน srcs ไฟล์ที่กฎเหล่านี้ระบุไว้จะอยู่ใน runfiles ของเป้าหมายนี้

srcs

List of labels; required

ไฟล์ที่มีสคริปต์ Shell

แอตทริบิวต์นี้ต้องเป็นรายการเดี่ยวที่มีองค์ประกอบเป็นสคริปต์เชลล์ สคริปต์นี้จะต้องเป็นไฟล์ปฏิบัติการและอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น ไฟล์อื่นๆ ทั้งหมดที่ต้องใช้ขณะรันไทม์ (ไม่ว่าจะเป็นสคริปต์หรือข้อมูล) จะอยู่ในแอตทริบิวต์ data

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 และข้อมูลที่โปรแกรมเหล่านี้ต้องใช้ในรันไทม์ จากนั้น คุณจะใช้ "ไลบรารี" ดังกล่าวจากแอตทริบิวต์ 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
    ],
)

อาร์กิวเมนต์

แอตทริบิวต์
name

Name; required

ชื่อที่ไม่ซ้ํากันสําหรับเป้าหมายนี้

deps

List of labels; optional

รายการเป้าหมาย "ไลบรารี" ที่จะรวมในเป้าหมายนี้ ดูความคิดเห็นทั่วไปเกี่ยวกับ deps ได้ที่แอตทริบิวต์ทั่วไปที่กําหนดโดยกฎบิลด์ส่วนใหญ่

แอตทริบิวต์นี้ควรใช้เพื่อระบุกฎ sh_library อื่นๆ ที่ให้ซอร์สโค้ดโปรแกรมที่ตีความตามโค้ดใน srcs ไฟล์ที่กฎเหล่านี้ระบุไว้จะอยู่ใน runfiles ของเป้าหมายนี้

srcs

List of labels; optional

รายการไฟล์อินพุต

แอตทริบิวต์นี้ควรใช้เพื่อระบุไฟล์แหล่งที่มาของสคริปต์ Shell ที่เป็นของคลังนี้ สคริปต์โหลดสคริปต์อื่นๆ ได้โดยใช้คําสั่ง source หรือ . ของ Shell

การทดสอบ

ดูแหล่งที่มาของกฎ
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() จะสร้างการทดสอบที่เขียนเป็นสคริปต์เชือก Bourne

ดู แอตทริบิวต์ที่พบบ่อยสําหรับกฎการทดสอบทั้งหมด (*_test)

ตัวอย่าง

sh_test(
    name = "foo_integration_test",
    size = "small",
    srcs = ["foo_integration_test.sh"],
    deps = [":foo_sh_lib"],
    data = glob(["testdata/*.txt"]),
)

อาร์กิวเมนต์

แอตทริบิวต์
name

Name; required

ชื่อที่ไม่ซ้ํากันสําหรับเป้าหมายนี้

deps

List of labels; optional

รายการเป้าหมาย "ไลบรารี" ที่จะรวมในเป้าหมายนี้ ดูความคิดเห็นทั่วไปเกี่ยวกับ deps ได้ที่แอตทริบิวต์ทั่วไปที่กําหนดโดยกฎบิลด์ส่วนใหญ่

แอตทริบิวต์นี้ควรใช้เพื่อระบุกฎ sh_library อื่นๆ ที่ให้ซอร์สโค้ดโปรแกรมที่ตีความตามโค้ดใน srcs ไฟล์ที่กฎเหล่านี้ระบุไว้จะอยู่ใน runfiles ของเป้าหมายนี้

srcs

List of labels; required

ไฟล์ที่มีสคริปต์ Shell

แอตทริบิวต์นี้ต้องเป็นรายการเดี่ยวที่มีองค์ประกอบเป็นสคริปต์เชลล์ สคริปต์นี้จะต้องเป็นไฟล์ปฏิบัติการและอาจเป็นไฟล์ต้นฉบับหรือไฟล์ที่สร้างขึ้น ไฟล์อื่นๆ ทั้งหมดที่ต้องใช้ขณะรันไทม์ (ไม่ว่าจะเป็นสคริปต์หรือข้อมูล) จะอยู่ในแอตทริบิวต์ data