存储库规则的上下文,其中包含辅助函数和属性相关信息。创建代码库规则时,您会获得一个 repository_ctx 对象,该对象将用作 implementation
函数的参数。
成员
- attr
- delete
- download
- download_and_extract
- 执行
- 提取
- file
- getenv
- name
- os
- 补丁
- path
- read
- report_progress
- symlink
- 模板
- watch
- watch_tree
- workspace_root
attr
struct repository_ctx.attr用于访问属性值的结构体。这些值由用户提供(如果未提供,则使用默认值)。
删除
bool repository_ctx.delete(path)删除文件或目录。返回一个布尔值,指示此调用是否实际删除了文件或目录。
参数
参数 | 说明 |
---|---|
path
|
字符串;或路径;
必需 要删除的文件的路径(相对于代码库目录)或绝对路径。可以是路径或字符串。 |
下载
unknown repository_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', block=True)将文件下载到所提供网址的输出路径,并返回一个结构体,其中包含
success
(如果下载成功,则为 true
)和文件的哈希(如果成功,则包含 sha256
和 integrity
字段)。当 sha256
或 integrity
由用户指定时,强烈建议设置显式 canonical_id
。例如 get_default_canonical_id
参数
参数 | 说明 |
---|---|
url
|
字符串;或字符串的可迭代对象;
必需 引用同一文件的镜像网址列表。 |
output
|
字符串;或标签;或路径;
默认为 '' 输出文件的路径(相对于代码库目录)。 |
sha256
|
默认值为 '' 所下载文件的预期 SHA-256 哈希值。此值必须与下载的文件的 SHA-256 哈希值一致。由于远程文件可能会发生变化,因此省略 SHA-256 会带来安全风险。省略此字段的效果充其量是使 build 不具有密封性。此属性是可选的,可简化开发流程,但应在发布前进行设置。系统会先检查代码库缓存中是否有具有给定哈希的文件(如果已提供);只有在缓存中找不到该文件时,才会尝试下载。下载成功后,系统会将文件添加到缓存中。 |
executable
|
默认为 False 为创建的文件设置可执行标志,默认为 false。 |
allow_fail
|
默认值为 False 如果设置,则在返回值中指明错误,而不是针对下载失败引发错误。 |
canonical_id
|
默认值为 '' 如果设置,则将缓存命中限制为文件以相同的规范 ID 添加到缓存的情况。默认情况下,缓存使用校验和( sha256 或 integrity )。
|
auth
|
默认值为 {} 一个可选字典,用于指定部分网址的身份验证信息。 |
headers
|
默认值为 {} 可选字典,用于指定所有网址的 HTTP 标头。 |
integrity
|
默认为 '' 下载的文件的预期校验和,采用子资源完整性格式。此值必须与下载的文件的校验和值一致。由于远程文件可能会发生变化,因此忽略校验和会带来安全风险。省略此字段的效果充其量是使 build 不具有密封性。此属性是可选的,可简化开发流程,但应在发布前进行设置。系统会先检查代码库缓存中是否有具有给定校验和的文件(如果提供了此信息);只有在缓存中找不到该文件时,才会尝试下载。下载成功后,系统会将文件添加到缓存中。 |
block
|
默认值为 True 如果设为 false,调用会立即返回,并且会使用单个方法 wait() 返回令牌,而不是常规返回值,该方法会阻塞直到下载完成,然后返回常规返回值或照常抛出异常。 |
download_and_extract
struct repository_ctx.download_and_extract(url, output='', sha256='', type='', stripPrefix='', allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', rename_files={})将文件下载到所提供网址的输出路径,对其进行解压缩,然后返回一个结构体,其中包含
success
(如果下载成功,则为 true
)标志,以及文件的哈希(如果成功,则包含 sha256
和 integrity
字段)。当 sha256
或 integrity
由用户指定时,强烈建议设置显式 canonical_id
。例如 get_default_canonical_id
参数
参数 | 说明 |
---|---|
url
|
字符串;或字符串的可迭代对象;
必需 引用同一文件的镜像网址列表。 |
output
|
字符串;或标签;或路径;
默认值为 '' 要解压缩到其中的目录的路径(相对于代码库目录)。 |
sha256
|
默认值为 '' 所下载文件的预期 SHA-256 哈希值。此值必须与下载的文件的 SHA-256 哈希值一致。由于远程文件可能会发生变化,因此省略 SHA-256 会带来安全风险。省略此字段的效果充其量是使 build 不具有密封性。此属性是可选的,可简化开发流程,但应在发布前进行设置。系统会先检查代码库缓存中是否有具有给定哈希的文件(如果已提供);只有在缓存中找不到该文件时,才会尝试下载。下载成功后,系统会将文件添加到缓存中。 |
type
|
默认为 '' 下载文件的归档类型。默认情况下,归档类型根据网址的文件扩展名确定。如果文件没有扩展名,您可以在此处明确指定“zip”“jar”“war”“aar”“nupkg”“tar”“tar.gz”“tgz”“tar.xz”“txz”“.tar.zst”“.tzst”“tar.bz2”“.tbz”“.ar”或“.deb”。 |
stripPrefix
|
默认为 '' 要从解压缩的文件中剥离的目录前缀。 许多归档文件都包含一个顶级目录,其中包含归档文件中的所有文件。您无需在 build_file 中反复指定此前缀,只需使用此字段即可从提取的文件中剥离此前缀。
|
allow_fail
|
默认值为 False 如果设置,则在返回值中指明错误,而不是针对下载失败引发错误。 |
canonical_id
|
默认值为 '' 如果设置,则将缓存命中限制为文件以相同的规范 ID 添加到缓存的情况。默认情况下,缓存使用校验和”( sha256 或 integrity )。
|
auth
|
默认值为 {} 一个可选字典,用于指定部分网址的身份验证信息。 |
headers
|
默认值为 {} 可选字典,用于指定所有网址的 HTTP 标头。 |
integrity
|
默认为 '' 下载的文件的预期校验和,采用子资源完整性格式。此值必须与下载的文件的校验和值一致。由于远程文件可能会发生变化,因此忽略校验和会带来安全风险。省略此字段的效果充其量是使 build 不具有密封性。此属性是可选的,可简化开发流程,但应在发布前进行设置。系统会先检查代码库缓存中是否有具有给定校验和的文件(如果提供了此信息);只有在缓存中找不到该文件时,才会尝试下载。下载成功后,系统会将文件添加到缓存中。 |
rename_files
|
默认值为 {} 一个可选字典,用于指定在提取过程中要重命名的文件。在调整任何目录前缀之前,名称与键完全匹配的归档条目将重命名为相应值。这可用于提取包含非 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
|
默认值为 {} 强制设置一些环境变量以传递给进程。 |
quiet
|
默认值为 True 确定是否应将标准输出和标准错误输出到终端。 |
working_directory
|
默认为 "" 命令执行的工作目录。 可以是相对于代码库根目录的路径,也可以是绝对路径。默认目录为代码库的根目录。 |
extract
None
repository_ctx.extract(archive, output='', stripPrefix='', *, rename_files={}, watch_archive='auto')
将归档解压缩到代码库目录。
参数
参数 | 说明 |
---|---|
archive
|
字符串;或标签;或路径;
必需 要解压缩的归档文件的路径(相对于代码库目录)。 |
output
|
字符串;或标签;或路径;
默认为 '' 要解压缩归档文件的目录的路径(相对于代码库目录)。 |
stripPrefix
|
默认为 '' 要从提取的文件中剥离的目录前缀。 许多归档文件都包含一个顶级目录,其中包含归档文件中的所有文件。您无需在 build_file 中反复指定此前缀,只需使用此字段即可从提取的文件中剥离此前缀。
|
rename_files
|
默认值为 {} 一个可选字典,用于指定在提取过程中要重命名的文件。在调整任何目录前缀之前,名称与键完全匹配的归档条目将重命名为相应值。这可用于提取包含非 Unicode 文件名的归档文件,或提取的文件在不区分大小写的文件系统中会提取到相同的路径的归档文件。 |
watch_archive
|
默认为 'auto' 是否监控归档文件。可以是字符串“yes”“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”表示不会尝试监控文件;传递“auto”表示仅在合法的情况下尝试监控文件(如需了解详情,请参阅 watch() 文档)。
|
文件
None
repository_ctx.file(path, content='', executable=True, legacy_utf8=True)
在代码库目录中使用所提供的内容生成文件。
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;
必需 相对于代码库目录要创建的文件的路径。 |
content
|
默认为 '' 要创建的文件的内容,默认为空。 |
executable
|
默认为 True 为创建的文件设置可执行标志,默认为 true。 |
legacy_utf8
|
默认值为 True 将文件内容编码为 UTF-8,默认为 true。未来的版本将更改默认值并移除此参数。 |
getenv
string repository_ctx.getenv(name, default=None)以字符串形式返回环境变量
name
的值(如果存在);如果不存在,则返回 default
。在增量构建时,对 name
命名变量的值所做的任何更改都会导致重新提取此代码库。
参数
参数 | 说明 |
---|---|
name
|
字符串;
必需 所需环境变量的名称。 |
default
|
字符串;或 None ;
默认为 None 如果未找到 name ,则返回的默认值。
|
None
。
name
string repository_ctx.name此规则创建的外部代码库的名称。
os
repository_os repository_ctx.os用于访问系统中信息的结构体。
patch
None
repository_ctx.patch(patch_file, strip=0, *, watch_patch='auto')
将补丁文件应用到外部代码库的根目录。补丁文件应为标准的 统一差异格式文件。与 patch 命令行工具不同,Bazel 原生补丁实现不支持模糊匹配和二进制补丁。
参数
参数 | 说明 |
---|---|
patch_file
|
字符串;或标签;或路径;
必需 要应用的补丁文件,可以是标签、相对路径或绝对路径。如果是相对路径,则会解析为代码库目录。 |
strip
|
默认值为 0 从文件名中剥离指定数量的前导组件。 |
watch_patch
|
默认为 'auto' 是否监控补丁文件。可以是字符串“yes”“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”表示不会尝试监控文件;传递“auto”表示仅在合法的情况下尝试监控文件(如需了解详情,请参阅 watch() 文档)。
|
路径
path repository_ctx.path(path)返回字符串、标签或路径中的路径。如果路径是相对路径,则会相对于代码库目录解析。如果路径是标签,则会解析为相应文件的路径。请注意,远程代码库是在分析阶段执行的,因此无法依赖于目标结果(标签应指向非生成的文件)。如果 path 是路径,则会原样返回该路径。
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;
必需 要从中创建路径的 string 、Label 或 path 。
|
read
string repository_ctx.read(path, *, watch='auto')读取文件系统中文件的内容。
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;
必须提供 要从中读取的文件的路径。 |
watch
|
默认为 'auto' 是否监控文件。可以是字符串“yes”“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”表示不会尝试监控文件;传递“auto”表示仅在合法的情况下尝试监控文件(如需了解详情,请参阅 watch() 文档)。
|
report_progress
None
repository_ctx.report_progress(status='')
更新此代码库或模块扩展程序提取的进度状态。
参数
参数 | 说明 |
---|---|
status
|
string;默认为 '' string ,用于描述提取进度的当前状态。
|
符号链接
None
repository_ctx.symlink(target, link_name)
在文件系统上创建符号链接。
参数
参数 | 说明 |
---|---|
target
|
字符串;或标签;或路径;
必需 符号链接应指向的路径。 |
link_name
|
字符串;或标签;或路径;
必需 要创建的符号链接的路径。 |
模板
None
repository_ctx.template(path, template, substitutions={}, executable=True, *, watch_template='auto')
使用 template
生成新文件。template
中 substitutions
键的每个出现都会替换为相应的值。结果会写入 path
。可选的 executable
参数(默认为 true)可用于开启或关闭可执行位。
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;
必需 相对于代码库目录要创建的文件的路径。 |
template
|
字符串;或标签;或路径;
必需 模板文件的路径。 |
substitutions
|
默认值为 {} 在展开模板时要进行的替换。 |
executable
|
默认为 True 为创建的文件设置可执行标志,默认为 true。 |
watch_template
|
默认为 'auto' 是否监控模板文件。可以是字符串“yes”“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”表示不会尝试监控文件;传递“auto”表示仅在合法的情况下尝试监控文件(如需了解详情,请参阅 watch() 文档)。
|
手表
None
repository_ctx.watch(path)
告知 Bazel 监控指定路径的更改,无论该路径是否存在,也无论它是文件还是目录。对文件或目录所做的任何更改都会使此代码库或模块扩展无效,并导致系统在下次重新提取或重新评估该扩展。“更改”包括文件内容的更改(如果路径是文件);路径是文件但现在是目录,或相反;以及路径开始或停止存在。值得注意的是,如果路径是目录,则不包括对目录下任何文件所做的更改。为此,请改用 path.readdir()
。
请注意,如果尝试监控当前正在提取的代码库或当前模块扩展程序的工作目录中的路径,将会导致错误。如果模块扩展程序尝试监控当前 Bazel 工作区之外的路径,也会导致错误。
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;
必需 要监控的文件的路径。 |
watch_tree
None
repository_ctx.watch_tree(path)
指示 Bazel 监控给定路径下所有文件或目录的传递性更改。对文件内容、文件或目录的存在性、文件名或目录名的任何更改都会导致系统重新提取此代码库。请注意,如果尝试监控当前正在提取的代码库中的路径,将会导致错误。
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;
必需 要监控的目录树的路径。 |
哪个
path repository_ctx.which(program)返回相应程序的
path
;如果路径中没有此类程序,则返回 None
。
参数
参数 | 说明 |
---|---|
program
|
必需 要在路径中查找的程序。 |
None
。
workspace_root
path repository_ctx.workspace_rootbazel 调用的根工作区的路径。