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 cái tên sai: kết quả đầu ra không nhất thiết là tệp nhị phân.) Quy tắc này đảm bảo rằng tất cả các phần phụ thuộc đều được xây dựng và xuất hiện trong khu vực 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 phần mở rộng (ví dụ: .sh
); tên quy tắc và tên tệp phải khác nhau.
sh_binary
tôn trọng việc chia sẻ âm nhạc, nên bạn có thể sử dụng mọi phiên dịch hiện có (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 dành riêng cho mục tiêu này. |
deps
|
deps tại mục Các thuộc tính thông thường được xác định theo hầu hết quy tắc tạo.
Bạn nên dùng thuộc tính này để liệt kê các quy tắc |
srcs
|
Thuộc tính này phải là 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 bắt buộ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 |
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 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 ngôn ngữ thông dịch không yêu cầu biên dịch hoặc liên kết, chẳng hạn như shell Bourne – và mọi dữ liệu mà các chương trình đó cần trong thời gian chạy. Sau đó, bạn có thể dùng các "thư viện" như vậy qua thuộc tính data
của một hoặc nhiều quy tắc sh_binary
.
Bạn có thể dùng quy tắc filegroup
để tổng hợp các tệp dữ liệu.
Trong ngôn ngữ lập trình thông dịch, 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 người phiên dịch. Vì lý do đó, quy tắc này có 3 thuộc tính về cơ bản là tương đương: srcs
, deps
và data
.
Việc 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 đề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 dành riêng cho mục tiêu này. |
deps
|
deps tại mục Các thuộc tính thông thường được xác định theo hầu hết quy tắc tạo.
Bạn nên dùng thuộc tính này để liệt kê các quy tắc |
srcs
|
Bạn nên dùng thuộc tính này để liệt kê các tệp nguồn 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 |
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 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 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 |
Tên dành riêng cho mục tiêu này. |
deps
|
deps tại mục Các thuộc tính thông thường được xác định theo hầu hết quy tắc tạo.
Bạn nên dùng thuộc tính này để liệt kê các quy tắc |
srcs
|
Thuộc tính này phải là 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 bắt buộ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 |