repositorio_ctx

Es el contexto de la regla del repositorio que contiene funciones auxiliares e información sobre los atributos. Obtienes un objeto repository_ctx como argumento para la función implementation cuando creas una regla de repositorio.

Miembros

attr

structure repository_ctx.attr

Es una estructura para acceder a los valores de los atributos. El usuario proporciona los valores (si no lo hace, se usa un valor predeterminado).

borrar

bool repository_ctx.delete(path)

Borra un archivo o un directorio. Devuelve un valor booleano que indica si esta llamada borró realmente el archivo o el directorio.

Parámetros

Parámetro Descripción
path cadena o ruta de acceso; obligatorio
Ruta de acceso del archivo que se borrará, relativa al directorio del repositorio o absoluta. Puede ser una ruta de acceso o una cadena.

descargar

unknown repository_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 para la URL proporcionada y devuelve un struct que contiene success, una marca que es true si la descarga se completó correctamente y, si se completó correctamente, un hash del archivo con los campos sha256 y integrity. Cuando el usuario especifica sha256 o integrity, se recomienda establecer 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 duplicadas que hacen referencia al mismo archivo.
output cadena, Label o ruta de acceso; el valor predeterminado es ''
ruta de acceso al archivo de salida, relativa al directorio del repositorio.
sha256 string; el valor predeterminado es ''
Es el hash SHA-256 esperado del archivo descargado. Debe coincidir con el hash SHA-256 del archivo descargado. Omitir el SHA-256 es un riesgo de seguridad, ya que los archivos remotos pueden cambiar. En el mejor de los casos, si omites este campo, tu compilación no será hermética. Es opcional para facilitar el desarrollo, pero se debe configurar antes del envío. Si se proporciona, primero se verificará la caché del repositorio para ver si hay 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 exitosa, el archivo se agregará a la caché.
executable bool; el valor predeterminado es False
Establece la marca de ejecución en el archivo creado. El valor predeterminado es falso.
allow_fail bool; El valor predeterminado es False
Si se configura, indica el error en el valor de devolución en lugar de generar un error por las descargas fallidas.
canonical_id string; El valor predeterminado es ''
Si se configura, restringe los aciertos de caché a aquellos 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 verificación (sha256 o integrity).
auth dict; El valor predeterminado es {}
Es un diccionario opcional que especifica la 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 ''
Suma de comprobación esperada del archivo descargado, en formato de Subresource Integrity. Debe coincidir con la suma de verificación del archivo descargado. Omitir la suma de verificación es un riesgo de seguridad, ya que los archivos remotos pueden cambiar. En el mejor de los casos, si omites este campo, tu compilación no será hermética. Es opcional para facilitar el desarrollo, pero se debe configurar antes del envío. Si se proporciona, primero se verificará la caché del repositorio para ver si hay un archivo con la suma de verificación determinada. Solo se intentará una descarga si no se encuentra el archivo en la caché. Después de una descarga exitosa, el archivo se agregará a la caché.
block bool; el valor predeterminado es True
Si se establece en falso, la llamada se devuelve de inmediato y, en lugar del valor de devolución normal, devuelve un token con un solo método, wait(), que se bloquea hasta que finaliza la descarga y devuelve el valor de devolución habitual o arroja una excepción como de costumbre.

download_and_extract

struct repository_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 para la URL proporcionada, lo extrae y devuelve un struct que contiene success, una marca que es true si la descarga se completó correctamente y, si se completó correctamente, un hash del archivo con los campos sha256 y integrity. Cuando el usuario especifica sha256 o integrity, se recomienda establecer 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 duplicadas que hacen referencia al mismo archivo.
output cadena, Label o ruta de acceso; el valor predeterminado es ''
Ruta de acceso al directorio en el que se descomprimirá el archivo, relativa al directorio del repositorio.
sha256 string; el valor predeterminado es ''
Es el hash SHA-256 esperado del archivo descargado. Debe coincidir con el hash SHA-256 del archivo descargado. Omitir el SHA-256 es un riesgo de seguridad, ya que los archivos remotos pueden cambiar. En el mejor de los casos, si omites este campo, tu compilación no será hermética. Es opcional para facilitar el desarrollo, pero se debe configurar antes del envío. Si se proporciona, primero se verificará la caché del repositorio para ver si hay 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 exitosa, el archivo se agregará a la caché.
type string; 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 del archivo de la URL. Si el archivo no tiene extensión, puedes especificar explícitamente "zip", "jar", "war", "aar", "nupkg", "whl", "tar", "tar.gz", "tgz", "tar.xz", "txz", ".tar.zst", ".tzst", "tar.bz2", ".tbz", ".ar" o ".deb" aquí.
strip_prefix string; 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 incluye todos los archivos del archivo. En lugar de tener que especificar este prefijo una y otra vez en el 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 bool; El valor predeterminado es False
Si se configura, indica el error en el valor de devolución en lugar de generar un error por las descargas fallidas.
canonical_id string; El valor predeterminado es ''
Si se configura, restringe los aciertos de caché a aquellos 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 verificación (sha256 o integrity).
auth dict; El valor predeterminado es {}
Es un diccionario opcional que especifica la 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 ''
Suma de comprobación esperada del archivo descargado, en formato de Subresource Integrity. Debe coincidir con la suma de verificación del archivo descargado. Omitir la suma de verificación es un riesgo de seguridad, ya que los archivos remotos pueden cambiar. En el mejor de los casos, si omites este campo, tu compilación no será hermética. Es opcional para facilitar el desarrollo, pero se debe configurar antes del envío. Si se proporciona, primero se verificará la caché del repositorio para ver si hay un archivo con la suma de verificación determinada. Solo se intentará una descarga si no se encuentra el archivo en la caché. Después de una descarga exitosa, 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. Las entradas del archivo con nombres que coincidan exactamente con una clave se cambiarán al valor antes de cualquier ajuste del prefijo del directorio. Se puede usar para extraer archivos que contienen nombres de archivo no Unicode o que tienen archivos que se extraerían en la misma ruta de acceso en sistemas de archivos que no distinguen mayúsculas de minúsculas.

ejecutar

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

Ejecuta el comando proporcionado por la lista de argumentos. El tiempo de ejecución del comando está limitado por timeout (en segundos, 600 segundos de forma predeterminada). Este método devuelve 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
Lista de argumentos. El primer elemento debe ser la ruta de acceso al programa que se ejecutará.
timeout int; El valor predeterminado es 600
Duración máxima del comando en segundos (el valor predeterminado es 600 segundos).
environment dict; El valor predeterminado es {}
Fuerza la configuración de 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 ""
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.

extract

None repository_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, Label o ruta de acceso; obligatorio
ruta de acceso al archivo que se descomprimirá, relativa al directorio del repositorio.
output cadena, Label o ruta de acceso; el valor predeterminado es ''
ruta de acceso al directorio en el que se descomprimirá el archivo, relativa al directorio del repositorio.
strip_prefix string; El valor predeterminado es ''
Prefijo de directorio que se quitará de los archivos extraídos. Muchos archivos contienen un directorio de nivel superior que incluye 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. Las entradas del archivo con nombres que coincidan exactamente con una clave se cambiarán al valor antes de cualquier ajuste del prefijo del directorio. Se puede usar para extraer archivos que contienen nombres de archivo no Unicode o que tienen archivos que se extraerían en la misma ruta de acceso en sistemas de archivos que no distinguen mayúsculas de minúsculas.
watch_archive string; El valor predeterminado es 'auto'
Indica si se debe observar el archivo. Puede ser la cadena "yes", "no" o "auto". Si se pasa "yes", es equivalente a invocar de inmediato el método watch(). Si se pasa "no", no se intenta observar el archivo. Si se pasa "auto", solo se intentará observar el archivo cuando sea legal hacerlo (consulta la documentación de watch() para obtener más información).

archivo

None repository_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, Label o ruta de acceso; obligatorio
Ruta de acceso del archivo que se creará, relativa al 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 de ejecución en el archivo creado. El valor predeterminado es verdadero.
legacy_utf8 bool; El valor predeterminado es False
No se realiza ninguna operación. Este parámetro está obsoleto y se quitará en una versión futura de Bazel.

getenv

string repository_ctx.getenv(name, default=None)

Devuelve 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 denominada por name hará que se vuelva a recuperar este repositorio.

Parámetros

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

nombre

string repository_ctx.name

Es el nombre canónico del repositorio externo que creó esta regla. Se garantiza que este nombre es único entre todos los repositorios externos, pero no se especifica su formato exacto. En su lugar, usa original_name para obtener el nombre que se especificó originalmente como name cuando se creó esta regla del repositorio.

original_name

string repository_ctx.original_name

Es el nombre que se especificó originalmente como el atributo name cuando se creó una instancia de esta regla del repositorio. Este nombre no es necesariamente único entre los repositorios externos. Usa name en su lugar para obtener el nombre canónico del repositorio externo.

os

repository_os repository_ctx.os

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

patch

None repository_ctx.patch(patch_file, strip=0, *, watch_patch='auto')

Aplica un archivo de parche al directorio raíz del repositorio externo. El archivo de parche debe ser un archivo estándar en formato de diff unificado. La implementación de parches nativa de Bazel no admite la coincidencia aproximada ni los parches binarios, como la herramienta de línea de comandos patch.

Parámetros

Parámetro Descripción
patch_file string, Label o path; obligatorio
Es el archivo de parche que se aplicará. Puede ser una etiqueta, una ruta de acceso relativa o una ruta de acceso absoluta. Si es una ruta de acceso relativa, se resolverá en el directorio del repositorio.
strip int; el valor predeterminado es 0
Quita la cantidad especificada de componentes iniciales de los nombres de archivos.
watch_patch string; El valor predeterminado es 'auto'
Indica si se debe observar el archivo de parche. Puede ser la cadena "yes", "no" o "auto". Si se pasa "yes", es equivalente a invocar de inmediato el método watch(). Si se pasa "no", no se intenta observar el archivo. Si se pasa "auto", solo se intentará observar el archivo cuando sea legal hacerlo (consulta la documentación de watch() para obtener más información).

ruta de acceso

path repository_ctx.path(path)

Devuelve una ruta de acceso a partir de una cadena, una etiqueta o una ruta de acceso. Si este contexto es un repository_ctx, una ruta de acceso relativa se resolverá en relación con el directorio del repositorio. Si es un module_ctx, una ruta relativa se resolverá en relación con un directorio de trabajo temporal para esta extensión del módulo. Si la ruta es una etiqueta, se resolverá en la ruta del archivo correspondiente. Ten en cuenta que los repositorios remotos y las extensiones de módulos se ejecutan durante la fase de análisis y, por lo tanto, no pueden depender de un resultado de destino (la etiqueta debe apuntar a un archivo no generado). Si la ruta de acceso es una ruta, la devolverá tal cual.

Parámetros

Parámetro Descripción
path cadena, etiqueta o ruta de acceso; obligatorio
string, Label o path desde el cual se creará una ruta de acceso.

read

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

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

Parámetros

Parámetro Descripción
path cadena, Label o ruta de acceso; obligatorio
Ruta de acceso del archivo desde el que se leerá.
watch string; El valor predeterminado es 'auto'
Indica si se debe observar el archivo. Puede ser la cadena "yes", "no" o "auto". Si se pasa "yes", es equivalente a invocar de inmediato el método watch(). Si se pasa "no", no se intenta observar el archivo. Si se pasa "auto", solo se intentará observar el archivo cuando sea legal hacerlo (consulta la documentación de watch() para obtener más información).

renombrar

None repository_ctx.rename(src, dst)

Cambia el nombre del archivo o directorio de src a dst. Los directorios principales se crean según sea necesario. Falla si la ruta de destino ya existe. Ambas rutas deben estar ubicadas dentro del repositorio.

Parámetros

Parámetro Descripción
src cadena, Label o ruta de acceso; obligatorio
Ruta de acceso del archivo o directorio existente al que se le cambiará el nombre, relativa a la ruta de acceso del directorio del repositorio.
dst cadena, Label o ruta de acceso; obligatorio
Es el nuevo nombre con el que se renombrará el archivo o el directorio, relativo al directorio del repositorio.

repo_metadata

repo_metadata repository_ctx.repo_metadata(*, reproducible=False, attrs_for_reproducibility={})

Crea un objeto opaco que se puede devolver desde la función de implementación de la regla del repositorio para proporcionar metadatos sobre su reproducibilidad.

Parámetros

Parámetro Descripción
reproducible bool; el valor predeterminado es False
Indica que este repo se puede volver a recuperar de forma reproducible, es decir, si se recuperara otra vez con exactamente los mismos atributos de entrada, la misma definición de regla del repo, los mismos archivos observados y las mismas variables de entorno, etc., se produciría exactamente el mismo resultado. Esta propiedad debe mantenerse incluso si cambian otras condiciones no registradas, como la información de Internet, la ruta de la raíz del espacio de trabajo, el resultado de la ejecución de ejecutables arbitrarios, etcétera. Si se establece en True, esto permite que el contenido del repo recuperado se almacene en caché en todos los espacios de trabajo.

Ten en cuenta que establecer este valor en verdadero no garantiza el almacenamiento en caché en la caché de contenido del repo. Por ejemplo, las reglas del repo local nunca se almacenan en caché.

attrs_for_reproducibility dict; el valor predeterminado es {}
Si reproducible es False, se puede especificar para indicarle a Bazel qué atributos de la regla del repo original se deben cambiar para que sea reproducible.

report_progress

None repository_ctx.report_progress(status='')

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

Parámetros

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

None repository_ctx.symlink(target, link_name)

Crea un vínculo simbólico en el sistema de archivos.

Parámetros

Parámetro Descripción
target cadena, etiqueta o ruta de acceso; obligatorio
Ruta de acceso a la que debe apuntar el vínculo simbólico.
string, Label o path; obligatorio
Es la ruta de acceso del vínculo simbólico que se creará.

plantilla

None repository_ctx.template(path, template, substitutions={}, executable=True, *, watch_template='auto')

Genera un archivo nuevo con un template. Cada ocurrencia en template de una clave de substitutions se reemplazará por el valor correspondiente. El resultado se escribe en path. Se puede establecer un argumento executable opcional (el valor predeterminado es verdadero) para activar o desactivar el bit ejecutable.

Parámetros

Parámetro Descripción
path cadena, Label o ruta de acceso; obligatorio
Ruta de acceso del archivo que se creará, relativa al directorio del repositorio.
template cadena, etiqueta o ruta de acceso; obligatorio
Ruta de acceso al archivo de plantilla.
substitutions dict; El valor predeterminado es {}
Sustituciones que se deben realizar cuando se expande la plantilla.
executable bool; el valor predeterminado es True
Establece la marca de ejecución en el archivo creado. El valor predeterminado es verdadero.
watch_template string; El valor predeterminado es 'auto'
Indica si se debe observar el archivo de plantilla. Puede ser la cadena "yes", "no" o "auto". Si se pasa "yes", es equivalente a invocar de inmediato el método watch(). Si se pasa "no", no se intenta observar el archivo. Si se pasa "auto", solo se intentará observar el archivo cuando sea legal hacerlo (consulta la documentación de watch() para obtener más información).

reloj

None repository_ctx.watch(path)

Indica a Bazel que supervise los cambios en la ruta de acceso determinada, independientemente de si existe o no, o de si es un archivo o un directorio. Cualquier cambio en el archivo o directorio invalidará esta extensión del repositorio o del módulo, y hará que se vuelva a recuperar o evaluar la próxima vez.

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

Ten en cuenta que intentar observar rutas dentro del repo que se está recuperando o dentro del directorio de trabajo de la extensión del módulo actual generará un error. Una extensión de módulo que intente observar una ruta fuera del espacio de trabajo actual de Bazel también generará un error.

Parámetros

Parámetro Descripción
path cadena, Label o ruta de acceso; obligatorio
Ruta de acceso del archivo que se supervisará.

watch_tree

None repository_ctx.watch_tree(path)

Indica a Bazel que supervise los cambios en cualquier archivo o directorio de forma transitiva en la ruta especificada. Cualquier cambio en el contenido de los archivos, la existencia de archivos o directorios, los nombres de los archivos o los nombres de los directorios hará que se vuelva a recuperar este repo.

Ten en cuenta que, si intentas observar rutas de acceso dentro del repo que se está recuperando, se generará un error.

Parámetros

Parámetro Descripción
path cadena, Label o ruta de acceso; obligatorio
Ruta de acceso del árbol de directorios que se supervisará.

cuál

path repository_ctx.which(program)

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

Parámetros

Parámetro Descripción
program string; obligatorio
Programa que se debe buscar en la ruta de acceso.
Puede devolver None.

workspace_root

path repository_ctx.workspace_root

Es la ruta de acceso al espacio de trabajo raíz de la invocación de Bazel.