กฎเชลล์

วันที่ รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

กฎ

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 ที่แอตทริบิวต์ทั่วไปที่กำหนดโดย กฎการสร้างส่วนใหญ่

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

srcs

รายการป้ายกำกับ ต้องระบุ

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

แอตทริบิวต์นี้ต้องเป็นรายการ Singleton ซึ่งมีองค์ประกอบที่เป็นสคริปต์ 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 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 ที่แอตทริบิวต์ทั่วไปที่กำหนดโดย กฎการสร้างส่วนใหญ่

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

srcs

รายการป้ายกำกับ ค่าเริ่มต้นคือ []

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

แอตทริบิวต์นี้ควรใช้เพื่อแสดงรายการไฟล์แหล่งที่มาของสคริปต์ Shell ที่เป็นของ ไลบรารีนี้ สคริปต์โหลดสคริปต์อื่นๆ ได้โดยใช้ source ของ 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 ที่แอตทริบิวต์ทั่วไปที่กำหนดโดย กฎการสร้างส่วนใหญ่

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

srcs

รายการป้ายกำกับ ต้องระบุ

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

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