Quy tắc shell

Báo cáo vấn đề Xem nguồn Nightly · 7.4 .

Quy tắc

sh_binary

Xem nguồn quy tắc
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)

Quy tắc sh_binary dùng để khai báo các tập lệnh shell có thể thực thi. (sh_binary là tên gọi sai: đầu ra của hàm này không nhất thiết phải là tệp nhị phân.) Quy tắc này đảm bảo rằng tất cả phần phụ thuộc đều được tạo và xuất hiện trong vùng runfiles tại thời điểm thực thi. Bạn nên đặt tên cho các quy tắc sh_binary() theo tên của tập lệnh trừ đi đuôi tệp (ví dụ: .sh); tên quy tắc và tên tệp phải khác nhau. sh_binary tuân theo shebang, vì vậy, bạn có thể sử dụng bất kỳ trình thông dịch nào có sẵn (ví dụ: #!/bin/zsh)

Ví dụ:

Đối với tập lệnh shell đơn giản không có phần phụ thuộc và một số tệp dữ liệu:

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

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

deps

Danh sách nhãn; mặc định là []

Danh sách các mục tiêu "thư viện" sẽ được tổng hợp vào mục tiêu này. Xem các nhận xét chung về deps tại phần Các thuộc tính thông thường do hầu hết các quy tắc bản dựng xác định.

Bạn nên sử dụng thuộc tính này để liệt kê các quy tắc sh_library khác cung cấp mã nguồn chương trình được diễn giải mà mã trong srcs phụ thuộc vào. Các tệp do các quy tắc này cung cấp sẽ xuất hiện trong runfiles của mục tiêu này.

srcs

Danh sách nhãn; bắt buộc

Tệp chứa tập lệnh shell.

Thuộc tính này phải là một danh sách singleton, trong đó phần tử là tập lệnh shell. Tập lệnh này phải thực thi được và có thể là tệp nguồn hoặc tệp được tạo. Tất cả các tệp khác cần thiết trong thời gian chạy (dù là tập lệnh hay dữ liệu) đều thuộc thuộc tính data.

sh_library

Xem nguồn quy tắc
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)

Mục đích chính của quy tắc này là tổng hợp một "thư viện" logic bao gồm các tập lệnh liên quan – các chương trình bằng một ngôn ngữ được diễn giải không yêu cầu biên dịch hoặc liên kết, chẳng hạn như Bourne shell – và mọi dữ liệu mà các chương trình đó cần trong thời gian chạy. Sau đó, các "thư viện" như vậy có thể được sử dụng qua thuộc tính data của một hoặc nhiều quy tắc sh_binary.

Bạn có thể sử dụng quy tắc filegroup để tổng hợp các tệp dữ liệu.

Trong các ngôn ngữ lập trình được diễn giải, không phải lúc nào cũng có sự phân biệt rõ ràng giữa "mã" và "dữ liệu": xét cho cùng, chương trình chỉ là "dữ liệu" theo quan điểm của trình thông dịch. Vì lý do này, quy tắc này có ba thuộc tính đều tương đương về cơ bản: srcs, depsdata. Cách triển khai hiện tại không phân biệt giữa các phần tử của các danh sách này. Cả 3 thuộc tính này đều chấp nhận các quy tắc, tệp nguồn và tệp được tạo. Tuy nhiên, bạn nên sử dụng các thuộc tính cho mục đích thông thường (như với các quy tắc khác).

Ví dụ

sh_library(
    name = "foo",
    data = [
        ":foo_service_script",  # an sh_binary with srcs
        ":deploy_foo",  # another sh_binary with srcs
    ],
)

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

deps

Danh sách nhãn; mặc định là []

Danh sách mục tiêu "thư viện" được tổng hợp vào mục tiêu này. Xem các nhận xét chung về deps tại phần Các thuộc tính thông thường do hầu hết các quy tắc bản dựng xác định.

Bạn nên sử dụng thuộc tính này để liệt kê các quy tắc sh_library khác cung cấp mã nguồn chương trình được diễn giải mà mã trong srcs phụ thuộc vào. Các tệp do các quy tắc này cung cấp sẽ xuất hiện trong runfiles của mục tiêu này.

srcs

Danh sách nhãn; mặc định là []

Danh sách tệp đầu vào.

Bạn nên sử dụng thuộc tính này để liệt kê các tệp nguồn của tập lệnh shell thuộc thư viện này. Các tập lệnh có thể tải các tập lệnh khác bằng lệnh source hoặc . của shell.

sh_test

Xem nguồn quy tắc
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)

Quy tắc sh_test() tạo một chương trình kiểm thử được viết dưới dạng tập lệnh shell Bourne.

Xem các thuộc tính phổ biến cho tất cả quy tắc kiểm thử (*_test).

Ví dụ

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

Đối số

Thuộc tính
name

Tên; bắt buộc

Tên duy nhất cho mục tiêu này.

deps

Danh sách nhãn; mặc định là []

Danh sách các mục tiêu "thư viện" sẽ được tổng hợp vào mục tiêu này. Xem các nhận xét chung về deps tại phần Các thuộc tính thông thường do hầu hết các quy tắc bản dựng xác định.

Bạn nên sử dụng thuộc tính này để liệt kê các quy tắc sh_library khác cung cấp mã nguồn chương trình được diễn giải phụ thuộc vào mã trong srcs. Các tệp do các quy tắc này cung cấp sẽ xuất hiện trong runfiles của mục tiêu này.

srcs

Danh sách nhãn; bắt buộc

Tệp chứa tập lệnh shell.

Thuộc tính này phải là một danh sách singleton có phần tử là tập lệnh shell. Tập lệnh này phải có thể thực thi và có thể là tệp nguồn hoặc tệp được tạo. Tất cả các tệp khác cần thiết trong thời gian chạy (dù là tập lệnh hay dữ liệu) đều thuộc thuộc tính data.