Regras de shell

Regras

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)

A regra sh_binary é usada para declarar scripts de shell executáveis. sh_binary é um nome incorreto: as saídas dele 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. Recomendamos nomear suas regras sh_binary() de acordo com o nome do script, menos a extensão (por exemplo, .sh). O nome da regra e do arquivo precisam ser diferentes. sh_binary respeita 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 o destino.

deps

List of labels; optional

A lista de destinos de "biblioteca" a serem agregadas nesse destino. Consulte 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 sh_library que fornecem o código-fonte interpretado do programa dependente do código em srcs. Os arquivos fornecidos por essas regras estarão presentes entre os runfiles desse destino.

srcs

List of labels; required

O arquivo que contém o script de shell.

O atributo precisa ser uma lista singleton, com elemento que é o script de shell. Esse script precisa ser executável e pode ser um arquivo de origem ou um arquivo gerado. Todos os outros arquivos necessários no momento da execução (scripts ou dados) pertencem ao atributo 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)

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 todos os dados que esses programas precisam no ambiente 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 esse motivo, essa regra tem três atributos que são essencialmente 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, é uma boa prática usar os atributos para seus fins habituais (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 o destino.

deps

List of labels; optional

A lista de destinos de "biblioteca" a serem agregadas nesse destino. Consulte 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 sh_library que fornecem o código-fonte interpretado do programa dependente do código em srcs. Os arquivos fornecidos por essas regras estarão presentes entre os runfiles desse 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.

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)

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 o destino.

deps

List of labels; optional

A lista de destinos de "biblioteca" a serem agregadas nesse destino. Consulte 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 sh_library que fornecem o código-fonte interpretado do programa dependente do código em srcs. Os arquivos fornecidos por essas regras estarão presentes entre os runfiles desse destino.

srcs

List of labels; required

O arquivo que contém o script de shell.

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