กฎเชลล์

กฎ

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

ตัวอย่าง

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

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

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

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

ชื่อ (ต้องระบุ)

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

deps

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

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

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

srcs

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

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

แอตทริบิวต์นี้ต้องเป็นรายการเดี่ยวที่มีองค์ประกอบเป็นสคริปต์ของ 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 ของกฎอย่างน้อย 1 กฎsh_binary

คุณสามารถใช้กฎ 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

ชื่อ (ต้องระบุ)

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

deps

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

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

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

srcs

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

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

ควรใช้แอตทริบิวต์นี้เพื่อแสดงรายการไฟล์ต้นฉบับของสคริปต์ของ 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() จะสร้างการทดสอบที่เขียนเป็นสคริปต์ของ Shell Bourne

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

ตัวอย่าง

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

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

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

ชื่อ (ต้องระบุ)

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

deps

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

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

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

srcs

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

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

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