กฎเชลล์

กฎ

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 ใช้เพื่อประกาศสคริปต์ Shell ที่เรียกใช้ได้ (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

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 เพื่อรวมไฟล์ข้อมูลได้

ในภาษาโปรแกรมที่แปลความหมาย อาจไม่มีความแตกต่างที่ชัดเจนระหว่าง "code" และ "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

Name; required

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

deps

List of labels; optional

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

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

srcs

List of labels; optional

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

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

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() สร้างการทดสอบที่เขียนเป็นสคริปต์เชลล์ 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

Name; required

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

deps

List of labels; optional

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

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

srcs

List of labels; required

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

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