Reglas de shell

Informar un problema Ver el código fuente

Reglas

binario_sh

Ver fuente de la regla
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)

La regla sh_binary se usa para declarar secuencias de comandos de shell ejecutables. (sh_binary es inapropiado, ya que sus resultados no son necesariamente binarios). Esta regla garantiza que todas las dependencias estén compiladas y aparezcan en el área runfiles durante el tiempo de ejecución. Te recomendamos que asignes un nombre a las reglas sh_binary() con el nombre de la secuencia de comandos menos la extensión (p.ej., .sh); el nombre de la regla y el nombre del archivo deben ser distintos. sh_binary respeta los bangs, por lo que se puede usar cualquier intérprete disponible (p. ej., #!/bin/zsh)

Ejemplo

Para una secuencia de comandos de shell simple sin dependencias y algunos archivos de datos:

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

Argumentos

Atributos
name

Name; required

Un nombre único para esta orientación.

deps

List of labels; optional

La lista de objetivos de "biblioteca" que se deben agregar a este objetivo. Consulta los comentarios generales sobre deps en la sección Atributos típicos definidos por la mayoría de las reglas de compilación.

Este atributo debe usarse para enumerar otras reglas sh_library que proporcionan un código fuente interpretado del programa que depende del código de srcs. Los archivos que proporcionen estas reglas estarán presentes en el runfiles de este destino.

srcs

List of labels; required

El archivo que contiene la secuencia de comandos de shell.

Este atributo debe ser una lista singleton, cuyo elemento sea la secuencia de comandos de shell. Esta secuencia de comandos debe ser ejecutable y puede ser un archivo de origen o un archivo generado. Todos los demás archivos necesarios en el tiempo de ejecución (ya sean secuencias de comandos o datos) pertenecen al atributo data.

biblioteca_sh

Ver fuente de la regla
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)

El uso principal de esta regla es agregar una "biblioteca" lógica que contenga secuencias de comandos relacionadas (programas en un lenguaje interpretado que no requiera compilación ni vinculación, como la shell Bourne) y cualquier dato que esos programas necesiten en el tiempo de ejecución. Estas "bibliotecas" se pueden usar desde el atributo data de una o más reglas sh_binary.

Puedes usar la regla filegroup para agregar archivos de datos.

En los lenguajes de programación interpretados, no siempre hay una distinción clara entre "código" y "datos". Después de todo, el programa es solo "datos" desde el punto de vista del intérprete. Por esta razón, esta regla tiene tres atributos que son básicamente equivalentes: srcs, deps y data. La implementación actual no distingue entre los elementos de estas listas. Los tres atributos aceptan reglas, archivos de origen y archivos generados. Sin embargo, se recomienda usar los atributos para su propósito habitual (como con otras reglas).

Ejemplos

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

Un nombre único para esta orientación.

deps

List of labels; optional

La lista de objetivos de "biblioteca" que se deben agregar a este objetivo. Consulta los comentarios generales sobre deps en la sección Atributos típicos definidos por la mayoría de las reglas de compilación.

Este atributo debe usarse para enumerar otras reglas sh_library que proporcionan un código fuente interpretado del programa que depende del código de srcs. Los archivos que proporcionen estas reglas estarán presentes en el runfiles de este destino.

srcs

List of labels; optional

La lista de archivos de entrada.

Este atributo debe usarse para enumerar los archivos de origen de la secuencia de comandos de shell que pertenecen a esta biblioteca. Las secuencias de comandos pueden cargar otras secuencias de comandos con el comando source o . de la shell.

prueba_sh

Ver fuente de la regla
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)

Una regla sh_test() crea una prueba escrita como una secuencia de comandos de shell de Bourne.

Consulta los atributos comunes para todas las reglas de prueba (*_test).

Ejemplos

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

Un nombre único para esta orientación.

deps

List of labels; optional

La lista de objetivos de "biblioteca" que se deben agregar a este objetivo. Consulta los comentarios generales sobre deps en la sección Atributos típicos definidos por la mayoría de las reglas de compilación.

Este atributo debe usarse para enumerar otras reglas sh_library que proporcionan un código fuente interpretado del programa que depende del código de srcs. Los archivos que proporcionen estas reglas estarán presentes en el runfiles de este destino.

srcs

List of labels; required

El archivo que contiene la secuencia de comandos de shell.

Este atributo debe ser una lista singleton, cuyo elemento sea la secuencia de comandos de shell. Esta secuencia de comandos debe ser ejecutable y puede ser un archivo de origen o un archivo generado. Todos los demás archivos necesarios en el tiempo de ejecución (ya sean secuencias de comandos o datos) pertenecen al atributo data.