module_ctx

模块扩展的上下文,包含辅助函数以及依赖关系图中相关标记的相关信息。创建模块扩展时,您会获得一个 module_ctx 对象,作为 implementation 函数的参数。

成员

download

struct module_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 不封闭。该 API 可以简化开发,但应在交付前进行设置。
executable default = False
在所创建的文件上设置可执行标志,默认为 false。
allow_fail default = False
如果设置此参数,则会在返回值中指明错误,而不是在下载失败时引发错误
canonical_id default = ''
如果设置此参数,则将缓存命中限制在文件被添加到缓存具有相同规范 ID 的情形下
auth default = {}
可选字典,用于指定某些网址的身份验证信息。
integrity default = ''
所下载文件的预期校验和(采用子资源完整性格式)。此校验和必须与所下载文件的校验和匹配。省略校验和会带来安全风险,因为远程文件可能会发生变化。最好省略此字段会使您的 build 不封闭。该 API 可以简化开发,但应在交付前进行设置。

download_and_extract

struct module_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 不封闭。该 API 是可选的,以便简化开发,但应在交付之前进行设置。如果提供该哈希值,系统会首先检查代码库缓存中是否有具有给定哈希值的文件;只有在缓存中找不到该文件时,系统才会尝试下载。下载成功后,该文件将被添加到缓存中。
type default = ''
已下载文件的归档类型。默认情况下,归档类型由网址的文件扩展名确定。如果该文件没有扩展名,您可以在此明确指定“zip”、“jar”、“war”、“aar”、“tar”、“tar.gz”、“tgz”、“tar.xz”、“txz”、“.tar.zst”、“.tzst”、“tar.bz2”、“.deb”或“此处”。
stripPrefix default = ''
要从提取的文件中删除的目录前缀。 许多归档包含一个顶级目录,其中包含归档中的所有文件。此字段可用于将前缀从提取的文件中剥离出来,无需在 build_file 中反复指定此前缀。
allow_fail default = False
如果设置此参数,则会在返回值中指明错误,而不是在下载失败时引发错误
canonical_id default = ''
如果设置此参数,则将缓存命中限制在文件被添加到缓存具有相同规范 ID 的情形下
auth default = {}
可选字典,用于指定某些网址的身份验证信息。
integrity default = ''
所下载文件的预期校验和(采用子资源完整性格式)。此校验和必须与所下载文件的校验和匹配。省略校验和会带来安全风险,因为远程文件可能会发生变化。最好省略此字段会使您的 build 不封闭。该 API 可以简化开发,但应在交付前进行设置。
rename_files default = {}
可选字典,用于指定在提取期间要重命名的文件。名称与键完全匹配的归档条目将被重命名为相应的值,然后才会进行任何目录前缀调整。这可用于提取包含非 Unicode 文件名的归档文件,或提取的文件会提取到不区分大小写的文件系统上的同一路径的归档文件。

execute

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

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

参数

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

文件

None module_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。未来的版本将更改默认设置并移除此参数。

modules

list module_ctx.modules

外部依赖关系图中所有 Bazel 模块的列表,每个模块都是一个 bazel_module 对象,用于公开此模块扩展指定的所有标记。此字典的迭代顺序保证与从根模块开始的广度优先搜索相同。

os

repository_os module_ctx.os

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

path

path module_ctx.path(path)

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

参数

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

阅读

string module_ctx.read(path)

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

参数

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

report_progress

None module_ctx.report_progress(status='')

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

参数

参数 说明
status string; default = ''
字符串,用于描述提取进度的当前状态

哪个

path module_ctx.which(program)

返回相应程序的路径;如果路径中没有此类程序,则返回 None。

参数

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