包含辅助函数和属性相关信息的代码库规则的上下文。创建仓库规则时,您需要获得仓库_ctx 对象作为 implementation
函数的参数。
成员
- attr
- 删除
- 下载
- download_and_extract
- 执行
- 提取
- 文件
- getenv
- 名称
- 操作系统
- 补丁
- 路径
- 阅读
- report_progress
- 符号链接
- 模板
- 手表
- watch_tree
- 其中
- workspace_root
attr
struct repository_ctx.attr
删除
bool repository_ctx.delete(path)
参数
参数 | 说明 |
---|---|
path
|
string;或 path;
必需 要删除的文件的路径(相对于代码库目录或绝对路径)。可以是路径或字符串。 |
下载
unknown repository_ctx.download(url, output='', sha256='', executable=False, allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', block=True)
success
的结构体。如果下载成功完成,该标志为 true
;如果下载成功,则会返回一个包含 sha256
和 integrity
字段的文件哈希值。
参数
参数 | 说明 |
---|---|
url
|
string;或 string 的 Iterable;
必需 引用同一文件的镜像网址列表。 |
output
|
string;或标签;或 path;
默认值为 '' 输出文件的路径(相对于代码库目录)。 |
sha256
|
默认值为 '' 所下载文件的预期 SHA-256 哈希。此哈希值必须与所下载文件的 SHA-256 哈希值一致。省略 SHA-256 会带来安全风险,因为远程文件可能会发生变化。省略此字段最好会导致您的 build 变得非封闭。为了简化开发,您可以视需要进行设置,但应在发布前进行设置。 |
executable
|
默认值为 False 在所创建的文件上设置可执行标志,默认为 false。 |
allow_fail
|
默认值为 False 如果设置,请在返回值中指明错误,而不是在下载失败时引发错误 |
canonical_id
|
默认值为 '' 如果设置了此字段,则将缓存命中限制为符合以下条件的情况:将文件添加到具有相同规范 ID 的缓存中 |
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
字段的文件哈希值。
参数
参数 | 说明 |
---|---|
url
|
string;或 string 的 Iterable;
必需 引用同一文件的镜像网址列表。 |
output
|
string;或标签;或 path;
默认值为 '' 将解压缩到存档的目录的路径(相对于代码库目录)。 |
sha256
|
默认值为 '' 所下载文件的预期 SHA-256 哈希。此哈希值必须与所下载文件的 SHA-256 哈希值一致。省略 SHA-256 会带来安全风险,因为远程文件可能会发生变化。省略此字段最好会导致您的 build 变得非封闭。为了简化开发,您可以视需要进行设置,但应在发布前进行设置。如果提供,系统会首先检查代码库缓存是否存在具有给定哈希的文件;仅当未在缓存中找到相应文件时才会尝试下载。下载成功后,系统会将该文件添加到缓存中。 |
type
|
默认值为 '' 已下载文件的归档类型。默认情况下,归档类型根据网址的文件扩展名确定。如果文件没有扩展名,您可以明确指定“zip”“jar”“war”“aar”“tar”“tar.gz”“tgz”“tar.xz”“txz”“.tar.zst”“.tzst”“tar.bz2”或“.tbz”此处。 |
stripPrefix
|
默认值为 '' 要从解压缩的文件中删除的目录前缀。 许多归档都包含一个顶级目录,其中包含归档中的所有文件。您可以使用此字段从提取的文件中删除此前缀,而无需在 build_file 中反复指定此前缀。
|
allow_fail
|
默认值为 False 如果设置,请在返回值中指明错误,而不是在下载失败时引发错误 |
canonical_id
|
默认值为 '' 如果设置了此字段,则将缓存命中限制为符合以下条件的情况:将文件添加到具有相同规范 ID 的缓存中 |
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 如果应输出 stdout 和 stderr 到终端。 |
working_directory
|
默认值为 "" 用于执行命令的工作目录。 可以是代码库根目录的相对路径,也可以是绝对路径。 |
extract
None
repository_ctx.extract(archive, output='', stripPrefix='', *, rename_files={}, watch_archive='auto')
参数
参数 | 说明 |
---|---|
archive
|
string;或标签;或 path;
必需 将解压缩的归档文件的路径(相对于代码库目录)。 |
output
|
string;或标签;或 path;
默认值为 '' 将解压缩到存档的目录的路径(相对于代码库目录)。 |
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
|
string;或标签;或 path;
必需 要创建的文件的路径(相对于代码库目录)。 |
content
|
默认值为 '' 要创建的文件的内容,默认情况下为空。 |
executable
|
默认值为 True 在所创建的文件上设置可执行标志,默认为 true。 |
legacy_utf8
|
默认值为 True 将文件内容编码为 UTF-8(默认情况下为 true)。未来的版本将更改默认值并移除此参数。 |
getenv
string repository_ctx.getenv(name, default=None)
name
存在,则返回字符串值;如果不存在,则返回 default
。增量构建时,对由 name
命名的变量值所做的任何更改都会导致系统重新获取此代码库。
参数
参数 | 说明 |
---|---|
name
|
string;
必需 所需环境变量的名称 |
default
|
string;或 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_file
|
string;或标签;或 path;
必需 要应用的补丁文件,它可以是标签、相对路径或绝对路径。如果是相对路径,则会解析为代码库目录。 |
strip
|
默认值为 0 从文件名中删除指定数量的前导组件。 |
watch_patch
|
默认值为 'auto' 是否监控补丁文件。可以是字符串“yes”、“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”不会尝试观看文件;传递“auto”只会在合法时尝试观看文件(如需了解详情,请参阅 watch() 文档)。
|
路径
path repository_ctx.path(path)
参数
参数 | 说明 |
---|---|
path
|
string;或标签;或 path;
必需 要创建其路径的字符串、标签或路径 |
read
string repository_ctx.read(path, *, watch='auto')
参数
参数 | 说明 |
---|---|
path
|
string;或标签;或 path;
必需 要读取的文件的路径。 |
watch
|
默认值为 'auto' 是否观看文件。可以是字符串“yes”、“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”不会尝试观看文件;传递“auto”只会在合法时尝试观看文件(如需了解详情,请参阅 watch() 文档)。
|
report_progress
None
repository_ctx.report_progress(status='')
参数
参数 | 说明 |
---|---|
status
|
string;
默认值为 '' 描述提取进度的当前状态的字符串 |
符号链接
None
repository_ctx.symlink(target, link_name)
参数
参数 | 说明 |
---|---|
target
|
string;或标签;或 path;
必需 符号链接应指向的路径。 |
link_name
|
string;或标签;或 path;
必需 要创建的符号链接的路径。 |
模板
None
repository_ctx.template(path, template, substitutions={}, executable=True, *, watch_template='auto')
template
生成新文件。substitutions
的键每次出现在 template
中时,都会替换为相应的值。结果使用 path
编写。通过设置可选的 executable
参数(默认为 true),可开启或关闭可执行位。
参数
参数 | 说明 |
---|---|
path
|
string;或标签;或 path;
必需 要创建的文件的路径(相对于代码库目录)。 |
template
|
string;或标签;或 path;
必需 模板文件的路径。 |
substitutions
|
默认值为 {} 替换模板。 |
executable
|
默认值为 True 在所创建的文件上设置可执行标志,默认为 true。 |
watch_template
|
默认值为 'auto' 是否监控模板文件。可以是字符串“yes”、“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”不会尝试观看文件;传递“auto”只会在合法时尝试观看文件(如需了解详情,请参阅 watch() 文档)。
|
手表
None
repository_ctx.watch(path)
“更改”包含对文件内容的更改(如果路径是文件);如果路径是文件,但现在是目录,或者相反;以及路径是开始还是停止存在。请注意,如果路径是目录,则这不包括对该目录下的任何文件的更改。为此,请改用 path.readdir()
。
请注意,如果尝试监视当前正在提取的代码库内部或当前模块扩展程序的工作目录内部的路径,将会导致错误。模块扩展程序尝试监视当前 Bazel 工作区之外的路径也会导致错误。
参数
参数 | 说明 |
---|---|
path
|
string;或标签;或 path;
必需 要监控的文件的路径。 |
watch_tree
None
repository_ctx.watch_tree(path)
请注意,尝试监控当前正在提取的代码库内的路径将会导致错误。
参数
参数 | 说明 |
---|---|
path
|
string;或标签;或 path;
必需 要监控的目录树的路径。 |
哪个
path repository_ctx.which(program)
参数
参数 | 说明 |
---|---|
program
|
必需 要在路径中查找的程序。 |
None
。
workspace_root
path repository_ctx.workspace_root