กฎเชลล์

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

กฎ

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

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

srcs

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

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

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

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

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

srcs

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

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

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

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

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

srcs

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

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

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