módulo_ctx

Denunciar un problema Ver código fuente Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Es el contexto de la extensión del módulo que contiene funciones auxiliares y la información sobre las etiquetas pertinentes en el grafo de dependencias. Obtienes un objeto module_ctx como argumento de la función implementation cuando creas una extensión de módulo.

Miembros

descargar

unknown module_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', block=True)

Descarga un archivo en la ruta de acceso de salida de la URL proporcionada y muestra una estructura que contiene success, una marca que es true si la descarga se completó correctamente y, si es así, un hash del archivo con los campos sha256 y integrity. Cuando el usuario especifica sha256 o integrity, se recomienda configurar un canonical_id explícito. p.ej., get_default_canonical_id

Parámetros

Parámetro Descripción
url cadena; o iterable de cadenas; obligatorio
Es una lista de URLs de espejo que hacen referencia al mismo archivo.
output cadena, etiqueta o ruta; el valor predeterminado es ''
; ruta de acceso al archivo de salida, en relación con el directorio del repositorio.
sha256 cadena; el valor predeterminado es ''
Es el hash SHA-256 esperado del archivo descargado. Debe coincidir con el hash SHA-256 del archivo descargado. Omitir SHA-256 es un riesgo de seguridad, ya que los archivos remotos pueden cambiar. En el mejor de los casos, omitir este campo hará que tu compilación no sea hermética. Es opcional para facilitar el desarrollo, pero debe configurarse antes del envío. Si se proporciona, primero se verificará la caché del repositorio en busca de un archivo con el hash determinado. Solo se intentará una descarga si no se encuentra el archivo en la caché. Después de una descarga correcta, el archivo se agregará a la caché.
executable bool; El valor predeterminado es False
Establece la marca ejecutable en el archivo creado, que es falsa de forma predeterminada.
allow_fail booleano; El valor predeterminado es False
Si se establece, indica el error en el valor que se muestra en lugar de generar un error para las descargas fallidas.
canonical_id cadena; el valor predeterminado es ''
Si se establece, restringe los aciertos de caché a los casos en los que el archivo se agregó a la caché con el mismo ID canónico. De forma predeterminada, el almacenamiento en caché usa la suma de comprobación (sha256 o integrity).
auth dict; El valor predeterminado es {}
. Es un diccionario opcional que especifica información de autenticación para algunas de las URLs.
headers dict; El valor predeterminado es {}
Es un diccionario opcional que especifica encabezados HTTP para todas las URLs.
integrity cadena; el valor predeterminado es ''
Es la suma de comprobación esperada del archivo descargado, en formato de integridad de subrecursos. Debe coincidir con la suma de comprobación del archivo descargado. Omitir la suma de comprobación es un riesgo de seguridad, ya que los archivos remotos pueden cambiar. En el mejor de los casos, omitir este campo hará que tu compilación no sea hermética. Es opcional para facilitar el desarrollo, pero debe configurarse antes del envío. Si se proporciona, primero se verificará la caché del repositorio en busca de un archivo con la suma de comprobación determinada. Solo se intentará una descarga si no se encuentra el archivo en la caché. Después de una descarga correcta, el archivo se agregará a la caché.
block bool; El valor predeterminado es True
Si se establece en "false", la llamada se muestra de inmediato y, en lugar del valor normal, muestra un token con un solo método, wait(), que se bloquea hasta que finaliza la descarga y muestra el valor normal o arroja como de costumbre.

download_and_extract

struct module_ctx.download_and_extract(url, output='', sha256='', type='', strip_prefix='', allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', rename_files={})

Descarga un archivo en la ruta de acceso de salida de la URL proporcionada, lo extrae y muestra una estructura que contiene success, una marca que es true si la descarga se completó correctamente y, si es así, un hash del archivo con los campos sha256 y integrity. Cuando el usuario especifica sha256 o integrity, se recomienda configurar un canonical_id explícito. p.ej., get_default_canonical_id

Parámetros

Parámetro Descripción
url cadena; o iterable de cadenas; obligatorio
Es una lista de URLs de espejo que hacen referencia al mismo archivo.
output cadena, etiqueta o ruta; el valor predeterminado es ''
Es la ruta de acceso al directorio en el que se descomprimirá el archivo, en relación con el directorio del repositorio.
sha256 cadena; el valor predeterminado es ''
Es el hash SHA-256 esperado del archivo descargado. Debe coincidir con el hash SHA-256 del archivo descargado. Omitir SHA-256 es un riesgo de seguridad, ya que los archivos remotos pueden cambiar. En el mejor de los casos, omitir este campo hará que tu compilación no sea hermética. Es opcional para facilitar el desarrollo, pero debe configurarse antes del envío. Si se proporciona, primero se verificará la caché del repositorio en busca de un archivo con el hash determinado. Solo se intentará una descarga si no se encuentra el archivo en la caché. Después de una descarga correcta, el archivo se agregará a la caché.
type cadena; el valor predeterminado es ''
Es el tipo de archivo del archivo descargado. De forma predeterminada, el tipo de archivo se determina a partir de la extensión de archivo de la URL. Si el archivo no tiene extensión, puedes especificar de forma explícita "zip", "jar", "war", "aar", "nupkg", "tar", "tar.gz", "tgz", "tar.xz", "txz", ".tar.zst", ".tzst", "tar.bz2", ".tbz", ".ar" o ".deb" aquí.
strip_prefix cadena; el valor predeterminado es ''
Es un prefijo de directorio que se quitará de los archivos extraídos. Muchos archivos contienen un directorio de nivel superior que contiene todos los archivos del archivo. En lugar de tener que especificar este prefijo una y otra vez en build_file, este campo se puede usar para quitarlo de los archivos extraídos.

Para la compatibilidad, este parámetro también se puede usar con el nombre obsoleto stripPrefix.

allow_fail booleano; El valor predeterminado es False
Si se establece, indica el error en el valor que se muestra en lugar de generar un error para las descargas fallidas.
canonical_id cadena; el valor predeterminado es ''
Si se establece, restringe los aciertos de caché a los casos en los que el archivo se agregó a la caché con el mismo ID canónico. De forma predeterminada, el almacenamiento en caché usa la suma de comprobación" (sha256 o integrity).
auth dict; El valor predeterminado es {}
. Es un diccionario opcional que especifica información de autenticación para algunas de las URLs.
headers dict; El valor predeterminado es {}
Es un diccionario opcional que especifica encabezados HTTP para todas las URLs.
integrity cadena; el valor predeterminado es ''
Es la suma de comprobación esperada del archivo descargado, en formato de integridad de subrecursos. Debe coincidir con la suma de comprobación del archivo descargado. Omitir la suma de comprobación es un riesgo de seguridad, ya que los archivos remotos pueden cambiar. En el mejor de los casos, omitir este campo hará que tu compilación no sea hermética. Es opcional para facilitar el desarrollo, pero debe configurarse antes del envío. Si se proporciona, primero se verificará la caché del repositorio en busca de un archivo con la suma de comprobación determinada. Solo se intentará una descarga si no se encuentra el archivo en la caché. Después de una descarga correcta, el archivo se agregará a la caché.
rename_files dict: El valor predeterminado es {}.
Es un diccionario opcional que especifica los archivos a los que se les cambiará el nombre durante la extracción. Los nombres de las entradas de archivo que coincidan exactamente con una clave se cambiarán al valor antes de cualquier ajuste de prefijo de directorio. Se puede usar para extraer archivos que contengan nombres de archivo que no sean Unicode o que tengan archivos que se extraigan en la misma ruta de acceso en sistemas de archivos que no distinguen mayúsculas de minúsculas.

ejecutar

exec_result module_ctx.execute(arguments, timeout=600, environment={}, quiet=True, working_directory="")

Ejecuta el comando que se proporciona en la lista de argumentos. El tiempo de ejecución del comando está limitado por timeout (en segundos, el valor predeterminado es de 600 segundos). Este método muestra una estructura exec_result que contiene el resultado del comando. El mapa environment se puede usar para anular algunas variables de entorno que se pasarán al proceso.

Parámetros

Parámetro Descripción
arguments sequence; obligatorio
Es una lista de argumentos, en la que el primer elemento debe ser la ruta de acceso al programa que se ejecutará.
timeout int; El valor predeterminado es 600
Es la duración máxima del comando en segundos (el valor predeterminado es de 600 segundos).
environment dict; el valor predeterminado es {}
Fuerza que se configuren algunas variables de entorno para que se pasen al proceso. El valor puede ser None para quitar la variable de entorno.
quiet bool; el valor predeterminado es True
Indica si stdout y stderr se deben imprimir en la terminal.
working_directory cadena; el valor predeterminado es ""
Es el directorio de trabajo para la ejecución de comandos. Puede ser relativa a la raíz del repositorio o absoluta. La raíz del repositorio es la ubicación predeterminada.

extension_metadata

extension_metadata module_ctx.extension_metadata(root_module_direct_deps=None, root_module_direct_dev_deps=None, reproducible=False)

Construye un objeto opaco que se puede mostrar desde la función de implementación de la extensión del módulo para proporcionar metadatos sobre los repositorios que genera la extensión a Bazel.

Parámetros

Parámetro Descripción
root_module_direct_deps Secuencia de cadenas, cadenas o None. El valor predeterminado es None
. Son los nombres de los repositorios que la extensión considera dependencias directas del módulo raíz. Si el módulo raíz importa repositorios adicionales o no importa todos estos repositorios a través de use_repo, Bazel imprimirá una advertencia cuando se evalúe la extensión y le indicará al usuario que ejecute bazel mod tidy para corregir las llamadas a use_repo automáticamente.

Si es uno de root_module_direct_deps, se imprimirá una advertencia y un comando de corrección cuando se evalúe la extensión.

Si se especifica uno de root_module_direct_deps y root_module_direct_dev_deps, también se debe especificar el otro. Las listas especificadas por estos dos parámetros deben ser disjuntas.

Se puede establecer exactamente uno de root_module_direct_deps y root_module_direct_dev_deps en el valor especial "all", que se trata como si se hubiera especificado una lista con los nombres de todos los repositorios generados por la extensión como valor.

root_module_direct_dev_deps Secuencia de cadenas, cadenas o None. El valor predeterminado es None
. Son los nombres de los repositorios que la extensión considera dependencias de desarrollo directas del módulo raíz. Si el módulo raíz importa repositorios adicionales o no importa todos estos repositorios a través de use_repo en un proxy de extensión creado con use_extension(..., dev_dependency = True), Bazel imprimirá una advertencia cuando se evalúe la extensión y le indicará al usuario que ejecute bazel mod tidy para corregir las llamadas a use_repo automáticamente.

Si se especifica uno de root_module_direct_deps y root_module_direct_dev_deps, también se debe especificar el otro. Las listas especificadas por estos dos parámetros deben ser disjuntas.

Se puede establecer exactamente uno de root_module_direct_deps y root_module_direct_dev_deps en el valor especial "all", que se trata como si se hubiera especificado una lista con los nombres de todos los repositorios generados por la extensión como valor.

reproducible bool; El valor predeterminado es False
Indica que esta extensión de módulo garantiza la reproducibilidad completa, por lo que no se debe almacenar en el archivo de bloqueo.

extract

None module_ctx.extract(archive, output='', strip_prefix='', *, rename_files={}, watch_archive='auto')

Extrae un archivo en el directorio del repositorio.

Parámetros

Parámetro Descripción
archive cadena, etiqueta o ruta de acceso; obligatoria
ruta de acceso al archivo que se descomprimirá, en relación con el directorio del repositorio
output cadena, etiqueta o ruta; el valor predeterminado es ''
; es la ruta de acceso al directorio en el que se descomprimirá el archivo, en relación con el directorio del repositorio.
strip_prefix cadena; el valor predeterminado es ''
un prefijo de directorio para quitar de los archivos extraídos. Muchos archivos contienen un directorio de nivel superior que contiene todos los archivos del archivo. En lugar de tener que especificar este prefijo una y otra vez en build_file, este campo se puede usar para quitarlo de los archivos extraídos.

Para la compatibilidad, este parámetro también se puede usar con el nombre obsoleto stripPrefix.

rename_files dict: El valor predeterminado es {}.
Es un diccionario opcional que especifica los archivos a los que se les cambiará el nombre durante la extracción. Los nombres de las entradas de archivo que coincidan exactamente con una clave se cambiarán al valor antes de cualquier ajuste de prefijo de directorio. Se puede usar para extraer archivos que contengan nombres de archivo que no sean Unicode o que tengan archivos que se extraigan en la misma ruta de acceso en sistemas de archivos que no distinguen mayúsculas de minúsculas.
watch_archive cadena; el valor predeterminado es 'auto'
Indica si se debe supervisar el archivo de almacenamiento. Puede ser la cadena "yes", "no" o "auto". Pasar "yes" equivale a invocar inmediatamente el método watch(). Pasar "no" no intenta supervisar el archivo. Pasar "auto" solo intentará supervisar el archivo cuando sea legal hacerlo (consulta la documentación de watch() para obtener más información).

archivo

None module_ctx.file(path, content='', executable=True, legacy_utf8=False)

Genera un archivo en el directorio del repositorio con el contenido proporcionado.

Parámetros

Parámetro Descripción
path cadena, etiqueta o ruta de acceso; obligatorio
Es la ruta de acceso del archivo que se creará, en relación con el directorio del repositorio.
content cadena; el valor predeterminado es ''
Es el contenido del archivo que se creará, vacío de forma predeterminada.
executable bool; El valor predeterminado es True
Establece la marca ejecutable en el archivo creado, que es verdadera de forma predeterminada.
legacy_utf8 bool; El valor predeterminado es False
No realiza ninguna acción. Este parámetro dejó de estar disponible y se quitará en una versión futura de Bazel.

getenv

string module_ctx.getenv(name, default=None)

Muestra el valor de una variable de entorno name como una cadena si existe, o default si no existe.

Cuando se compila de forma incremental, cualquier cambio en el valor de la variable que nombre name hará que se vuelva a recuperar este repositorio.

Parámetros

Parámetro Descripción
name cadena; obligatorio
Es el nombre de la variable de entorno deseada.
default cadena o None; el valor predeterminado es None
Es el valor predeterminado que se muestra si no se encuentra name.
Puede mostrar None.

is_dev_dependency

bool module_ctx.is_dev_dependency(tag)

Muestra si se especificó la etiqueta determinada en el resultado de una llamada use_extension con devDependency = True.

Parámetros

Parámetro Descripción
tag bazel_module_tag; obligatorio
Es una etiqueta obtenida de bazel_module.tags.

modules

list module_ctx.modules

Es una lista de todos los módulos de Bazel en el gráfico de dependencias externo que usan esta extensión de módulo, cada uno de los cuales es un objeto bazel_module que expone todas las etiquetas que especificó para esta extensión. Se garantiza que el orden de iteración de este diccionario sea el mismo que el de la búsqueda en amplitud a partir del módulo raíz.

os

repository_os module_ctx.os

Es una estructura para acceder a la información del sistema.

ruta de acceso

path module_ctx.path(path)

Muestra una ruta de acceso a partir de una cadena, etiqueta o ruta. Si la ruta de acceso es relativa, se resolverá en función del directorio del repositorio. Si la ruta es una etiqueta, se resolverá en la ruta del archivo correspondiente. Ten en cuenta que los repositorios remotos se ejecutan durante la fase de análisis y, por lo tanto, no pueden depender de un resultado objetivo (la etiqueta debe apuntar a un archivo no generado). Si path es una ruta de acceso, se mostrará tal como está.

Parámetros

Parámetro Descripción
path cadena, etiqueta o ruta; obligatorio
string, Label o path a partir de los cuales se puede crear una ruta de acceso.

read

string module_ctx.read(path, *, watch='auto')

Lee el contenido de un archivo en el sistema de archivos.

Parámetros

Parámetro Descripción
path cadena, etiqueta o ruta; obligatorio
Es la ruta de acceso del archivo del que se leerá.
watch cadena; el valor predeterminado es 'auto'
Indica si se debe supervisar el archivo. Puede ser la cadena "yes", "no" o "auto". Pasar "yes" equivale a invocar inmediatamente el método watch(). Pasar "no" no intenta supervisar el archivo. Pasar "auto" solo intentará supervisar el archivo cuando sea legal hacerlo (consulta la documentación de watch() para obtener más información).

report_progress

None module_ctx.report_progress(status='')

Actualiza el estado de progreso para la recuperación de este repositorio o extensión de módulo.

Parámetros

Parámetro Descripción
status cadena; el valor predeterminado es ''
string que describe el estado actual del progreso de recuperación.

root_module_has_non_dev_dependency

bool module_ctx.root_module_has_non_dev_dependency

Indica si el módulo raíz usa esta extensión como una dependencia que no es de dev.

reloj

None module_ctx.watch(path)

Le indica a Bazel que vigile los cambios en la ruta de acceso determinada, ya sea que exista o no, o si es un archivo o un directorio. Cualquier cambio en el archivo o directorio invalidará esta extensión de repositorio o módulo y hará que se vuelva a recuperar o evaluar la próxima vez.

Los "Cambios" incluyen cambios en el contenido del archivo (si la ruta de acceso es un archivo), si la ruta de acceso era un archivo, pero ahora es un directorio, o viceversa, y si la ruta de acceso comienza o deja de existir. En particular, esto no incluye cambios en ningún archivo del directorio si la ruta de acceso es un directorio. Para ello, usa path.readdir().

Ten en cuenta que, si intentas supervisar las rutas de acceso dentro del repositorio que se está recuperando o dentro del directorio de trabajo de la extensión del módulo actual, se producirá un error. Una extensión de módulo que intente supervisar una ruta de acceso fuera del lugar de trabajo de Bazel actual también generará un error.

Parámetros

Parámetro Descripción
path cadena, etiqueta o ruta; obligatorio
Es la ruta del archivo que se supervisará.

cuál

path module_ctx.which(program)

Muestra el path del programa correspondiente o None si no hay tal programa en la ruta de acceso.

Parámetros

Parámetro Descripción
program cadena; obligatorio
Es el programa que se debe encontrar en la ruta de acceso.
Puede mostrar None.