Quy tắc shell

Quy tắc

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)

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à một từ viết sai: dữ liệu đầu ra của ứng dụng không nhất thiết là tệp nhị phân.) Quy tắc này đảm bảo tất cả cá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() sau 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 biệt. sh_binary tuân theo nguyên tắc cộng đồng, vì vậy, bạn có thể sử dụng bất kỳ thông dịch viên 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

Name; required

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

deps

List of labels; optional

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

Bạn nên 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 của chương trình được thông dịch phụ thuộc vào mã trong srcs. Tệp do các quy tắc này cung cấp sẽ hiển thị trong runfiles của mục tiêu này.

srcs

List of labels; required

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 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 có trong thời gian chạy (cho dù là tập lệnh hay dữ liệu) đều thuộc Thuộc tính 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)

Mục đích sử dụng chính của quy tắc này là tổng hợp "thư viện" bao gồm các tập lệnh có liên quan — các chương trình trong một ngôn ngữ thông dịch không yêu cầu biên dịch hoặc liên kết, như Bourne shell – và bất kỳ dữ liệu nào mà chương trình đó cần thời gian chạy. Các "thư viện" như vậy sau đó có thể được sử dụng từ thuộc tính data của một hoặc sh_binary quy tắc khác.

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

Trong ngôn ngữ lập trình thông dịch, không phải lúc nào cũng có sự khác biệt giữa "mã" và "dữ liệu": rốt cuộc thì chương trình chỉ cần "dữ liệu" xét trên quan điểm của người phiên dịch. Vì lý do này quy tắc này có ba thuộc tính về cơ bản là tương đương: srcs, depsdata. Cách triển khai hiện tại không phân biệt các thành phần của những 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 (giống như 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

Name; required

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

deps

List of labels; optional

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

Bạn nên 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 của chương trình được thông dịch phụ thuộc vào mã trong srcs. Tệp do các quy tắc này cung cấp sẽ hiển thị trong runfiles của mục tiêu này.

srcs

List of labels; optional

Danh sách tệp nhập.

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 về thư viện này. Tập lệnh có thể tải các tập lệnh khác bằng cách sử dụng source của shell hoặc lệnh ..

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)

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.

Hãy xem thuộc tính chung 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

Name; required

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

deps

List of labels; optional

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

Bạn nên 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 của chương trình được thông dịch phụ thuộc vào mã trong srcs. Tệp do các quy tắc này cung cấp sẽ hiển thị trong runfiles của mục tiêu này.

srcs

List of labels; required

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 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 có trong thời gian chạy (cho dù là tập lệnh hay dữ liệu) đều thuộc Thuộc tính data.