規則
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
),為 sh_binary()
規則命名;規則名稱和檔案名稱不得重複。sh_binary
會遵守檔案總和特性,因此可使用任何可用的口譯 (例如:
#!/bin/zsh
)
範例
針對沒有依附元件和部分資料檔案的簡易殼層指令碼:
sh_binary( name = "foo", srcs = ["foo.sh"], data = glob(["datafiles/*.txt"]), )
引數
屬性 | |
---|---|
name |
此目標的專屬名稱。 |
deps
|
deps 的一般註解。
這個屬性應用於列出其他 |
srcs
|
這項屬性必須是單例模式清單,其元素為殼層指令碼。這個指令碼必須是執行檔,且可以是來源檔案或系統產生的檔案。執行階段所需要的所有其他檔案 (指令碼或資料) 都屬於 |
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 殼層),以及這些程式在執行階段需要的任何資料。接著,您可以從一或多項 sh_binary
規則的 data
屬性中使用這類「程式庫」。
您可以使用 filegroup
規則匯總資料檔案。
在解譯的程式設計語言中,不一定能明確區分「code」和「data」,畢竟程式其實只是解譯器觀點的「資料」。因此,這項規則有三個屬性,基本上相等:srcs
、deps
和 data
。目前的實作不會區分這些清單的元素。這三項屬性均接受規則、來源檔案和產生的檔案。不過,建議您按照一般用途使用屬性 (和其他規則一樣)。
範例
sh_library( name = "foo", data = [ ":foo_service_script", # an sh_binary with srcs ":deploy_foo", # another sh_binary with srcs ], )
引數
屬性 | |
---|---|
name |
此目標的專屬名稱。 |
deps
|
deps 的一般註解。
這個屬性應用於列出其他 |
srcs
|
這項屬性應用於列出屬於這個程式庫的殼層指令碼來源檔案。指令碼可以使用殼層的 |
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()
規則會建立以 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 的一般註解。
這個屬性應用於列出其他 |
srcs
|
這項屬性必須是單例模式清單,其元素為殼層指令碼。這個指令碼必須是執行檔,且可以是來源檔案或系統產生的檔案。執行階段所需要的所有其他檔案 (指令碼或資料) 都屬於 |