模块扩展的上下文,包含辅助函数以及依赖关系图中相关标记的相关信息。创建模块扩展时,您会获得一个 module_ctx 对象,该对象将用作 implementation
函数的实参。
成员
- download
- download_and_extract
- 执行
- extension_metadata
- 文件
- getenv
- is_dev_dependency
- 模块
- os
- path
- 阅读
- report_progress
- root_module_has_non_dev_dependency
- watch
下载
unknown module_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
|
字符串;或标签;或路径;
默认为 '' 输出文件的路径(相对于代码库目录)。 |
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 module_ctx.download_and_extract(url, output='', sha256='', type='', stripPrefix='', allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', rename_files={})
success
(如果下载成功,则为 true
)标志,以及文件的哈希(如果成功,则包含 sha256
和 integrity
字段)。
参数
参数 | 说明 |
---|---|
url
|
字符串;或字符串的可迭代对象;
必需 引用同一文件的镜像网址列表。 |
output
|
字符串;或标签;或路径;
默认值为 '' 将要解压缩归档文件的目录的路径(相对于代码库目录)。 |
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”“.ar”或“.deb”。 |
stripPrefix
|
默认为 '' 是从解压缩的文件中删除的目录前缀。 许多归档文件都包含一个顶级目录,其中包含归档文件中的所有文件。您可以使用此字段从提取的文件中删除此前缀,而无需在 build_file 中反复指定此前缀。
|
allow_fail
|
默认值为 False 如果设置,则在返回值中指明错误,而不是针对下载失败引发错误 |
canonical_id
|
默认值为 '' 如果设置此字段,则缓存命中数会限制为文件以相同规范 ID 添加到缓存的情况 |
auth
|
默认值为 {} 可选字典,用于指定部分网址的身份验证信息。 |
headers
|
默认值为 {} 可选字典,用于指定所有网址的 http 标头。 |
integrity
|
默认为 '' 下载的文件的预期校验和,采用子资源完整性格式。此值必须与下载的文件的校验和值一致。由于远程文件可能会更改,因此省略校验和会带来安全风险。省略此字段的效果充其量是使 build 不具有密封性。此属性是可选的,可简化开发流程,但应在发布前进行设置。 |
rename_files
|
默认值为 {} 可选字典,用于指定在提取过程中要重命名的文件。在调整任何目录前缀之前,名称与键完全匹配的归档条目将重命名为相应值。此 API 可用于提取包含非 Unicode 文件名的归档,或提取到不区分大小写的文件系统中同一路径的文件。 |
execute
exec_result module_ctx.execute(arguments, timeout=600, environment={}, quiet=True, working_directory="")
timeout
限制(以秒为单位,默认 600 秒)。此方法会返回一个包含命令输出的 exec_result
结构。environment
映射可用于替换要传递给进程的一些环境变量。
参数
参数 | 说明 |
---|---|
arguments
|
必需 实参列表,第一个元素应为要执行的程序的路径。 |
timeout
|
默认为 600 命令的最大时长(以秒为单位,默认为 600 秒)。 |
environment
|
默认值为 {} 强制设置某些环境变量以传递给进程。 |
quiet
|
默认值为 True 确定是否应将标准输出和标准错误输出到终端。 |
working_directory
|
默认为 "" 命令执行的工作目录。 可以是代码库根目录的相对路径,也可以是绝对路径。 |
extension_metadata
extension_metadata module_ctx.extension_metadata(root_module_direct_deps=None, root_module_direct_dev_deps=None, reproducible=False)
参数
参数 | 说明 |
---|---|
root_module_direct_deps
|
string;string;或 None ;默认值为 None 扩展程序视为根模块的直接依赖项的代码库的名称。如果根模块导入了其他代码库,或者未通过 use_repo 导入所有这些代码库,则 Bazel 会在评估扩展程序时输出警告,指示用户运行 bazel mod tidy 以自动修复 use_repo 调用。如果为 如果指定了
|
root_module_direct_dev_deps
|
字符串的序列;或字符串;或 None ;
默认为 None 扩展程序视为根模块的直接开发依赖项的代码库的名称。如果根模块通过使用 use_extension(..., dev_dependency = True) 创建的扩展程序代理上的 use_repo 导入其他代码库,或者未导入所有这些代码库,则 Bazel 会在评估扩展程序时输出警告,指示用户运行 bazel mod tidy 以自动修复 use_repo 调用。如果指定了
|
reproducible
|
bool;默认值为 False 声明此模块扩展可确保完全可重现,因此不应将其存储在锁定文件中。 |
文件
None
module_ctx.file(path, content='', executable=True, legacy_utf8=True)
参数
参数 | 说明 |
---|---|
path
|
string;Label;或 path;指定要创建的文件的 路径(相对于代码库目录)。 |
content
|
默认为 '' 要创建的文件的内容,默认为为空。 |
executable
|
默认为 True 为创建的文件设置可执行标志,默认为 true。 |
legacy_utf8
|
默认值为 True 将文件内容编码为 UTF-8,默认为 true。未来的版本将更改默认值并移除此参数。 |
getenv
string module_ctx.getenv(name, default=None)
name
的值(如果存在);如果不存在,则返回 default
。增量构建时,对 name
命名的变量的值所做的任何更改都会导致重新提取此代码库。
参数
参数 | 说明 |
---|---|
name
|
string;
required 所需环境变量的名称 |
default
|
string;或 None ;默认值为 None 找不到“name”时返回的默认值 |
None
。
is_dev_dependency
bool module_ctx.is_dev_dependency(tag)
devDependency = True
调用 use_extension 的结果中是否指定了给定标记。
参数
参数 | 说明 |
---|---|
tag
|
bazel_module_tag;
必需 从 bazel_module.tags 获取的标记。 |
模块
list module_ctx.modules
os
repository_os module_ctx.os
路径
path module_ctx.path(path)
参数
参数 | 说明 |
---|---|
path
|
string;Label;或 path;
required 根据其创建路径的字符串、标签或路径 |
read
string module_ctx.read(path, *, watch='auto')
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;
必需 要从中读取的文件的路径。 |
watch
|
默认为 'auto' 是否监控文件。可以是字符串“yes”、“no”或“auto”。传递“yes”等同于立即调用 watch() 方法;传递“no”不会尝试监视文件;传递“auto”只会在合法时尝试监视文件(如需了解详情,请参阅 watch() 文档)。
|
report_progress
None
module_ctx.report_progress(status='')
参数
参数 | 说明 |
---|---|
status
|
字符串;
默认为 '' 描述提取进度当前状态的字符串 |
root_module_has_non_dev_dependency
bool module_ctx.root_module_has_non_dev_dependency
手表
None
module_ctx.watch(path)
“更改”包括文件内容的更改(如果路径是文件);路径是文件但现在是目录,或相反;以及路径开始或停止存在。值得注意的是,如果路径是目录,则不包括对目录下任何文件所做的更改。为此,请改用 path.readdir()
。
请注意,如果尝试监视当前正在提取的代码库内部或当前模块扩展的工作目录内部的路径,将会导致错误。模块扩展程序尝试监视当前 Bazel 工作区之外的路径也会导致错误。
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;
必需 要监控的文件的路径。 |
哪个
path module_ctx.which(program)
参数
参数 | 说明 |
---|---|
program
|
必需 要在路径中查找的程序。 |
None
。