En particular, permite que la función de implementación acceda a la etiqueta, los atributos, la configuración y los proveedores de sus dependencias del destino actual. Tiene métodos para declarar archivos de salida y las acciones que los producen.
Los objetos de contexto existen durante la llamada a la función de implementación. No es útil acceder a estos objetos fuera de su función asociada. Consulta la página de reglas para obtener más información.
Miembros
- actions
- aspect_ids
- attr
- bin_dir
- build_file_path
- build_setting_value
- configuración
- coverage_instrumented
- created_actions
- disabled_features
- exec_groups
- ejecutable
- expand_location
- expand_make_variables
- funciones
- archivo
- archivos
- fragmentos
- genfiles_dir
- info_file
- label
- outputs
- package_relative_label
- resolve_command
- resolve_tools
- rule
- runfiles
- split_attr
- super
- target_platform_has_constraint
- toolchains
- var
- version_file
- workspace_name
acciones
actions ctx.actions
aspect_ids
list ctx.aspect_ids
attr
struct ctx.attr
attrs proporcionado a la función rule. Consulta un ejemplo de uso.
bin_dir
root ctx.bin_dir
build_file_path
string ctx.build_file_path
ctx.label.package + '/BUILD'. Es la ruta de acceso al archivo BUILD de esta regla, relativa a la raíz de la fuente.
build_setting_value
unknown ctx.build_setting_value
build_setting, leer esto es un error.
configuración
configuration ctx.configuration
coverage_instrumented
bool ctx.coverage_instrumented(target=None)
target, la regla especificada por ese destino. (Si se proporciona un destino que no es una regla o una regla de Starlark, se devuelve False). Verifica si las fuentes de la regla actual (si no se proporciona ningún destino) o las fuentes del destino se deben instrumentar según los parámetros de configuración --instrumentation_filter y --instrument_test_targets. Esto difiere de coverage_enabled en la configuración, que indica si la recopilación de datos de cobertura está habilitada para toda la ejecución, pero no si se debe instrumentar un destino específico.
Parámetros
| Parámetro | Descripción |
|---|---|
target
|
Objetivo o None; el valor predeterminado es NoneEs un objetivo que especifica una regla. Si no se proporciona, se usará la regla actual de forma predeterminada. |
created_actions
StarlarkValue ctx.created_actions()
True, se devuelve un proveedor Actions que representa todas las acciones creadas hasta el momento para la regla actual. Para todas las demás reglas, devuelve None. Ten en cuenta que el proveedor no se actualiza cuando se crean acciones posteriores, por lo que deberás volver a llamar a esta función si deseas inspeccionarlas. Esto tiene como objetivo ayudar a escribir pruebas para las funciones auxiliares de implementación de reglas, que pueden tomar un objeto
ctx y crear acciones en él.
disabled_features
list ctx.disabled_features
exec_groups
ExecGroupCollection ctx.exec_groups
ctx.exec_groups[name_of_group].
ejecutable
struct ctx.executable
struct que contiene archivos ejecutables definidos en atributos de tipo de etiqueta marcados como executable=True. Los campos de la struct corresponden a los nombres de los atributos. Cada valor de la estructura es File o None. Si no se especifica un atributo opcional en la regla, el valor de la estructura correspondiente es None. Si un tipo de etiqueta no está marcado como executable=True, no se genera ningún campo de struct correspondiente. Consulta un ejemplo de uso.
expand_location
string ctx.expand_location(input, targets=[])
$(location ...) en la cadena determinada reemplazando $(location //x) por la ruta de acceso del archivo de salida del destino //x. La expansión solo funciona para las etiquetas que apuntan a dependencias directas de esta regla o que se enumeran de forma explícita en el argumento opcional targets. $(location ...) causará un error si el destino al que se hace referencia tiene varias salidas. En este caso, usa $(locations ...), ya que produce una lista de rutas de acceso de salida separadas por espacios. También se puede usar de forma segura para un solo archivo de salida.Esta función es útil para permitir que el usuario especifique un comando en un archivo BUILD (como para
genrule). En otros casos, suele ser mejor manipular las etiquetas directamente.
Parámetros
| Parámetro | Descripción |
|---|---|
input
|
string;
required Es la cadena que se expandirá. |
targets
|
sequence de Targets;
el valor predeterminado es []Lista de destinos para obtener información de búsqueda adicional. Estos se expanden de la siguiente manera: Un destino con un solo archivo en DefaultInfo.files se expande a ese archivo. Otros destinos se expanden a su archivo DefaultInfo.executable si se configura y si --incompatible_locations_prefers_executable está habilitado; de lo contrario, se expanden a DefaultInfo.files.
|
None.
expand_make_variables
string ctx.expand_make_variables(attribute_name, command, additional_substitutions)
Devuelve una cadena después de expandir todas las referencias a "Crear variables". Las variables deben tener el siguiente formato:
$(VAR_NAME). Además, $$VAR_NAME expands to $VAR_NAME. Examples:
ctx.expand_make_variables("cmd", "$(MY_VAR)", {"MY_VAR": "Hi"}) # == "Hi"
ctx.expand_make_variables("cmd", "$$PWD", {}) # == "$PWD"
Additional variables may come from other places, such as configurations. Note that this function is experimental.
Parameters
| Parameter | Description |
|---|---|
attribute_name
|
string;
required The attribute name. Used for error reporting. |
command
|
string;
required The expression to expand. It can contain references to "Make variables". |
additional_substitutions
|
dict;
required Additional substitutions to make beyond the default make variables. |
features
list ctx.features
file
struct ctx.file
struct containing files defined in label type attributes marked as allow_single_file. The struct fields correspond to the attribute names. The struct value is always a File or None. If an optional attribute is not specified in the rule then the corresponding struct value is None. If a label type is not marked as allow_single_file, no corresponding struct field is generated. It is a shortcut for:list(ctx.attr.<ATTR>.files)[0]
file to access the (singular) default output of a dependency. See example of use.
files
struct ctx.files
struct containing files defined in label or label list type attributes. The struct fields correspond to the attribute names. The struct values are list of Files. It is a shortcut for:[f for t in ctx.attr.<ATTR> for f in t.files]
files to access the default outputs of a dependency. See example of use.
fragments
fragments ctx.fragments
genfiles_dir
root ctx.genfiles_dir
info_file
File ctx.info_file
label
Label ctx.label
outputs
structure ctx.outputs
File objects. See the Rules page for more information and examples.This field does not exist on aspect contexts, since aspects do not have predeclared outputs.
The fields of this object are defined as follows. It is an error if two outputs produce the same field name or have the same label.
- If the rule declares an
outputsdict, then for every entry in the dict, there is a field whose name is the key and whose value is the correspondingFile. - For every attribute of type
attr.outputthat the rule declares, there is a field whose name is the attribute's name. If the target specified a label for that attribute, then the field value is the correspondingFile; otherwise the field value isNone. - For every attribute of type
attr.output_listthat the rule declares, there is a field whose name is the attribute's name. The field value is a list ofFileobjects corresponding to the labels given for that attribute in the target, or an empty list if the attribute was not specified in the target. - (Deprecated) If the rule is marked
executableortest, there is a field named"executable", which is the default executable. It is recommended that instead of using this, you pass another file (either predeclared or not) to theexecutablearg ofDefaultInfo.
package_relative_label
Label ctx.package_relative_label(input)
Label, it is returned unchanged.The result of this function is the same es que Label value as would be produced by passing the given string to a label-valued attribute of the rule and accessing the corresponding Label()Label() usa el contexto del paquete del archivo .bzl que lo llamó, no el paquete del destino que se está analizando. Esta función tiene el mismo comportamiento que
native.package_relative_label(), que no se puede usar en una regla ni en una función de implementación de aspectos.
Parámetros
| Parámetro | Descripción |
|---|---|
input
|
cadena o Label;
obligatorio Es la cadena de la etiqueta de entrada o el objeto Label. Si se pasa un objeto Label, se devuelve tal cual. |
resolve_command
tuple ctx.resolve_command(*, command='', attribute=None, expand_locations=False, make_variables=None, tools=[], label_dict={}, execution_requirements={})
(inputs, command, empty list) de la lista de entradas resueltas y la lista de argv para el comando resuelto, ambas adecuadas para pasarse como los argumentos con el mismo nombre del método ctx.action.Nota para los usuarios de Windows: Este método requiere Bash (MSYS2). Considera usar
resolve_tools() en su lugar (si se ajusta a tus necesidades). La lista vacía se devuelve como el tercer miembro de la tupla para garantizar la retrocompatibilidad.
Parámetros
| Parámetro | Descripción |
|---|---|
command
|
string;
El valor predeterminado es ''Comando para resolver. |
attribute
|
cadena o None;
El valor predeterminado es NoneNombre del atributo asociado para el que se emitirá un error o None. |
expand_locations
|
bool;
el valor predeterminado es False¿Expandiremos las variables $(location)? Consulta ctx.expand_location() para obtener más detalles. |
make_variables
|
dict o None; el valor predeterminado es NoneCrea variables para expandir o None. |
tools
|
sequence de Targets;
el valor predeterminado es []Lista de herramientas (lista de destinos). |
label_dict
|
dict;
El valor predeterminado es {}Diccionario de etiquetas resueltas y la lista correspondiente de archivos (un diccionario de Label : lista de archivos). |
execution_requirements
|
dict;
el valor predeterminado es {}Es la información para programar la acción que resolverá este comando. Consulta etiquetas para obtener claves útiles. |
resolve_tools
tuple ctx.resolve_tools(*, tools=[])
(inputs, empty list) del depset de entradas resueltas necesarias para ejecutar las herramientas, apta para pasar como el argumento con el mismo nombre de los métodos ctx.actions.run y ctx.actions.run_shell. A diferencia de
ctx.resolve_command, este método no requiere que se instale Bash en la máquina, por lo que es adecuado para reglas compiladas en Windows. La lista vacía se devuelve como parte de la tupla para garantizar la retrocompatibilidad.
Parámetros
| Parámetro | Descripción |
|---|---|
tools
|
sequence de Targets;
el valor predeterminado es []Lista de herramientas (lista de destinos). |
regla
rule_attributes ctx.rule
runfiles
runfiles ctx.runfiles(files=[], transitive_files=None, collect_data=False, collect_default=False, symlinks={}, root_symlinks={})
Parámetros
| Parámetro | Descripción |
|---|---|
files
|
sequence de Files;
el valor predeterminado es []Es la lista de archivos que se agregarán a los archivos de ejecución. |
transitive_files
|
depset de Files o None;
El valor predeterminado es NoneEs el conjunto (transitivo) de archivos que se agregarán a los runfiles. El depset debe usar el orden default (que, como su nombre lo indica, es el predeterminado).
|
collect_data
|
bool;
el valor predeterminado es FalseNo se recomienda usar este parámetro. Consulta la guía de runfiles. Indica si se deben recopilar los archivos ejecutables de datos de las dependencias en los atributos srcs, data y deps. |
collect_default
|
bool;
el valor predeterminado es FalseNo se recomienda usar este parámetro. Consulta la guía de runfiles. Indica si se deben recopilar los archivos ejecutables predeterminados de las dependencias en los atributos srcs, data y deps. |
symlinks
|
dict o depset de SymlinkEntrys;
el valor predeterminado es {}Ya sea un depset de SymlinkEntry o el mapa de symlinks que se agregará a los runfiles. Los vínculos simbólicos siempre se agregan en el directorio de archivos ejecutables del espacio de trabajo principal (p.ej., <runfiles_root>/_main/<symlink_path>, no el directorio correspondiente al repositorio del destino actual). Consulta Vínculos simbólicos de runfiles en la guía de reglas.
|
root_symlinks
|
dict o depset de SymlinkEntrys;
el valor predeterminado es {}Ya sea un depset de SymlinkEntry o un mapa de symlinks que se agregarán a los runfiles. Consulta Vínculos simbólicos de runfiles en la guía de reglas. |
split_attr
struct ctx.split_attr
super
unknown ctx.super()
target_platform_has_constraint
bool ctx.target_platform_has_constraint(constraintValue)
Parámetros
| Parámetro | Descripción |
|---|---|
constraintValue
|
ConstraintValueInfo;
obligatorio Es el valor de restricción con el que se verificará la plataforma de destino. |
de seguridad
ToolchainContext ctx.toolchains
var
dict ctx.var
version_file
File ctx.version_file
workspace_name
string ctx.workspace_name
--enable_bzlmod está activado, esta es la cadena fija _main. De lo contrario, este es el nombre del espacio de trabajo tal como se define en el archivo WORKSPACE.