Regras do shell

Informar um problema Ver código-fonte

Regras

sh_binário

Ver origem da regra
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)

A regra sh_binary é usada para declarar scripts de shell executáveis. sh_binary é um erro: as saídas não são necessariamente binários. Essa regra garante que todas as dependências sejam criadas e apareçam na área runfiles no momento da execução. É recomendável nomear as regras sh_binary() de acordo com o nome do script, exceto a extensão (por exemplo, .sh). O nome da regra e do arquivo precisam ser distintos. sh_binary respeita as Shebangs. Portanto, qualquer intérprete disponível pode ser usado (por exemplo, #!/bin/zsh).

Exemplo

Para um script de shell simples sem dependências e alguns arquivos de dados:

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

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

deps

List of labels; optional

A lista de destinos de "biblioteca" a ser agregada a esse destino. Veja os comentários gerais sobre deps em Atributos típicos definidos pela maioria das regras de build.

Esse atributo precisa ser usado para listar outras regras de sh_library que fornecem o código-fonte do programa interpretado de acordo com o código em srcs. Os arquivos fornecidos por essas regras estarão presentes entre os runfiles do destino.

srcs

List of labels; required

O arquivo que contém o script de shell.

Esse atributo precisa ser uma lista singleton, cujo elemento é o script de shell. Esse script precisa ser executável e pode ser um arquivo de origem ou gerado. Todos os outros arquivos necessários no momento da execução (seja scripts ou dados) pertencem ao atributo data.

biblioteca sh

Ver origem da regra
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)

O principal uso dessa regra é agregar uma "biblioteca" lógica que consiste em scripts relacionados, programas em uma linguagem interpretada que não requer compilação ou vinculação, como o shell Bourne, e qualquer dado de que os programas precisam em tempo de execução. Essas "bibliotecas" podem ser usadas no atributo data de uma ou mais regras sh_binary.

É possível usar a regra filegroup para agregar arquivos de dados.

Em linguagens de programação interpretadas, nem sempre há uma distinção clara entre "código" e "dados". Afinal, o programa é apenas "dados" do ponto de vista do intérprete. Por isso, essa regra tem três atributos basicamente equivalentes: srcs, deps e data. A implementação atual não distingue entre os elementos dessas listas. Os três atributos aceitam regras, arquivos de origem e arquivos gerados. No entanto, é recomendável usar os atributos para a finalidade deles (como acontece com outras regras).

Exemplos

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

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

deps

List of labels; optional

A lista de destinos de "biblioteca" a ser agregada a esse destino. Veja os comentários gerais sobre deps em Atributos típicos definidos pela maioria das regras de build.

Esse atributo precisa ser usado para listar outras regras de sh_library que fornecem o código-fonte do programa interpretado de acordo com o código em srcs. Os arquivos fornecidos por essas regras estarão presentes entre os runfiles do destino.

srcs

List of labels; optional

Lista de arquivos de entrada.

Esse atributo precisa ser usado para listar os arquivos de origem do script de shell que pertencem a essa biblioteca. Os scripts podem carregar outros scripts usando o comando source ou . do shell.

teste_sh

Ver origem da regra
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)

Uma regra sh_test() cria um teste escrito como um script de shell Bourne.

Veja os atributos comuns a todas as regras de teste (*_test).

Exemplos

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

Argumentos

Atributos
name

Name; required

Um nome exclusivo para esse destino.

deps

List of labels; optional

A lista de destinos de "biblioteca" a ser agregada a esse destino. Veja os comentários gerais sobre deps em Atributos típicos definidos pela maioria das regras de build.

Esse atributo precisa ser usado para listar outras regras de sh_library que fornecem o código-fonte do programa interpretado de acordo com o código em srcs. Os arquivos fornecidos por essas regras estarão presentes entre os runfiles do destino.

srcs

List of labels; required

O arquivo que contém o script de shell.

Esse atributo precisa ser uma lista singleton, cujo elemento é o script de shell. Esse script precisa ser executável e pode ser um arquivo de origem ou gerado. Todos os outros arquivos necessários no momento da execução (seja scripts ou dados) pertencem ao atributo data.