repository_ctx

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。
包含辅助函数和属性相关信息的代码库规则的上下文。创建代码库规则时,您会获取 repository_ctx 对象作为 implementation 函数的参数。

会员

属性

struct repository_ctx.attr

用于访问属性值的结构体。这些值由用户提供(如果不是默认值,则使用默认值)。

delete

bool repository_ctx.delete(path)

删除文件或目录。返回布尔值,指示此调用是否实际删除了文件或目录。

参数

参数 说明
path string; or path;必需
相对于代码库目录的绝对文件的路径,或绝对路径。可以是路径或字符串。

download

struct repository_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, *, integrity='')

将文件下载到提供的网址的输出路径,并返回包含 success 的结构体,如果下载成功,该标志为 true;如果下载成功,则为文件的哈希值(sha256integrity)。

参数

参数 说明
url string; or Iterable of strings;必需
引用同一文件的镜像网址列表。
output string; or Label; or path; default = ''
输出文件的路径(相对于代码库目录)。
sha256 default = ''
所下载文件的预期 SHA-256 哈希。此名称必须与所下载文件的 SHA-256 哈希值一致。由于远程文件可能会发生变化,因此省略 SHA-256 会带来安全风险。最好忽略此字段,这会使您的 build 变为非封闭状态。您可以选择让开发更简单,但应在发货前设置。
executable default = False
在已创建的文件上设置可执行标志,默认为 false。
allow_fail default = False
如果已设置,请在返回值中指明错误,而不是在下载失败时抛出错误
canonical_id default = ''
如果已设置,请将文件命中次数限制为将文件添加到具有同一规范 ID 的缓存中的情况
auth default = {}
可选网址,用于指定某些网址的身份验证信息。
integrity default = ''
所下载文件的预期校验和,采用子资源完整性格式。此时间必须与所下载文件的校验和匹配。忽略校验和是一种安全风险,因为远程文件可能会发生变化。最好忽略此字段,这会使您的 build 变为非封闭状态。您可以选择让开发更简单,但应在发货前设置。

下载并提取

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

将文件下载到所提供网址的输出路径,提取该文件,并返回包含 success 的结构体。如果下载成功,该标志为 true;如果下载成功,则会返回一个包含字段 sha256integrity 的文件哈希值。

参数

参数 说明
url string; or Iterable of strings;必需
引用同一文件的镜像网址列表。
output string; or Label; or path; default = ''
将解压缩归档所在的目录(相对于代码库目录)的路径。
sha256 default = ''
所下载文件的预期 SHA-256 哈希。此名称必须与所下载文件的 SHA-256 哈希值一致。由于远程文件可能会发生变化,因此省略 SHA-256 会带来安全风险。最好忽略此字段,这会使您的 build 变为非封闭状态。您可以选择让开发变得更轻松,但应在交付前进行设置。如果提供了缓存,系统会首先检查具有给定哈希值的文件存储区缓存;仅当未在缓存中找到该文件时,系统才会尝试下载。成功下载后,系统会将该文件添加到缓存中。
type default = ''
已下载文件的归档类型。默认情况下,归档类型是通过网址的文件扩展名来确定的。查看详情。
stripPrefix default = ''
从提取的文件中移除的目录前缀。 许多归档都包含一个顶级目录,其中包含归档中的所有文件。此字段可用于从提取的文件中去除此前缀,无需在 build_file 中反复指定该前缀。
allow_fail default = False
如果已设置,请在返回值中指明错误,而不是在下载失败时抛出错误
canonical_id default = ''
如果已设置,请将文件命中次数限制为将文件添加到具有同一规范 ID 的缓存中的情况
auth default = {}
可选网址,用于指定某些网址的身份验证信息。
integrity default = ''
所下载文件的预期校验和,采用子资源完整性格式。此时间必须与所下载文件的校验和匹配。忽略校验和是一种安全风险,因为远程文件可能会发生变化。最好忽略此字段,这会使您的 build 变为非封闭状态。您可以选择让开发更简单,但应在发货前设置。
rename_files default = {}
一个可选字典,用于指定提取期间要重命名的文件。归档名称与密钥完全匹配的归档条目将被重命名为相应值,然后进行任何目录前缀调整。这可用于提取包含非 Unicode 文件名的归档文件,或包含会提取到不区分大小写文件系统中的相同路径的文件的归档。

execute

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

执行由参数列表提供的命令。命令的执行时间受 timeout 限制(以秒为单位,默认为 600 秒)。此方法会返回一个 exec_result 结构,其中包含该命令的输出结果。environment 映射可用于替换要传递给进程的一些环境变量。

参数

参数 说明
arguments 必需
参数列表,第一个元素应该是要执行的程序的路径。
timeout 默认值 = 600
命令的持续时间上限(以秒为单位)。默认值为 600 秒。
environment default = {}
强制将一些环境变量设置为传递给进程。
quiet default = True
如果 stdout 和 stderr 应输出到终端。
working_directory default = ""
执行命令的工作目录。 可以相对于代码库根目录或绝对路径。

extract

None repository_ctx.extract(archive, output='', stripPrefix='', *, rename_files={})

将归档解压缩到代码库目录。

参数

参数 说明
archive string; or Label; or path
将解压缩到的归档路径(相对于代码库目录)。
output string; or Label; or path; default = ''
将解压缩归档所在的目录(相对于代码库目录)的路径。
stripPrefix default = ''
从提取的文件中移除的目录前缀。 许多归档都包含一个顶级目录,其中包含归档中的所有文件。此字段可用于从提取的文件中去除此前缀,无需在 build_file 中反复指定该前缀。
rename_files default = {}
一个可选字典,用于指定提取期间要重命名的文件。归档名称与密钥完全匹配的归档条目将被重命名为相应值,然后进行任何目录前缀调整。这可用于提取包含非 Unicode 文件名的归档文件,或包含会提取到不区分大小写文件系统中的相同路径的文件的归档。

文件

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

在代码库目录中生成包含所提供的内容的文件。

参数

参数 说明
path string; or Label; or path;这是必需文件的
路径,与代码库目录相关。
content default = ''
要创建的文件的内容,默认情况下为空。
executable default = True
在创建的文件上设置可执行标志,默认为 true。
legacy_utf8 default = True
将文件内容编码为 UTF-8,默认值为 true。后续版本将更改默认值,并移除此参数。

name

string repository_ctx.name

此规则创建的外部代码库的名称。

os

repository_os repository_ctx.os

用于从系统访问信息的结构体。

patch

None repository_ctx.patch(patch_file, strip=0)

将补丁文件应用到外部代码库的根目录。补丁文件应为标准的统一差异格式文件。Bazel 原生补丁程序实现不支持模糊命令行工具和补丁补丁程序(如补丁命令行工具)。

参数

参数 说明
patch_file string; or Label; or path;必需
要应用的补丁程序文件,它可以是标签、相对路径或绝对路径。如果是相对路径,它会解析为代码库目录。
strip default = 0
从文件名中去除指定数量的前导组件。

路径

path repository_ctx.path(path)

返回字符串、标签或路径中的路径。如果路径是相对路径,则会相对于代码库目录进行解析。如果路径是标签,它会解析为相应文件的路径。请注意,远程代码库在分析阶段执行,因此不能依赖于目标结果(标签应指向非生成的文件)。如果路径是路径,它将按原样返回该路径。

参数

参数 说明
path string; or Label; or path;必需
字符串、标签或根据其创建路径的路径

read

string repository_ctx.read(path)

读取文件系统上文件的内容。

参数

参数 说明
path string; or Label; or path;必需
要读取的文件的路径。

报告进度

None repository_ctx.report_progress(status='')

更新此代码库或模块扩展的提取进度

参数

参数 说明
status string;默认值为 ''
,用于描述提取进度的当前状态

None repository_ctx.symlink(target, link_name)

在文件系统上创建符号链接。

参数

参数 说明
target string; or Label; or path;必需
符号链接应指向的路径。
string; or Label; or path;必需
要创建的符号链接的路径(相对于代码库目录)。

模板

None repository_ctx.template(path, template, substitutions={}, executable=True)

使用 template 生成新文件。每次出现键 substitutions 时,template 都会替换为相应的值。结果采用 path 编写。您可以设置可选的 executable 参数(默认为 true),以启用或停用可执行位。

参数

参数 说明
path string; or Label; or path;这是必需文件的
路径,与代码库目录相关。
template string; or Label; or path;必需元素,指向模板文件。
substitutions default = {}
展开模板时进行替换。
executable default = True
在创建的文件上设置可执行标志,默认为 true。

哪个

path repository_ctx.which(program)

返回相应程序的路径;如果路径中不存在该程序,则返回 None。

参数

参数 说明
program required
在路径中查找的程序。
可能会返回 None

workspace_root

path repository_ctx.workspace_root

bazel 调用的根工作区的路径。