implementation
函数的实参。
成员
- attr
- delete
- 下载
- download_and_extract
- execute
- 提取
- 文件
- getenv
- 名称
- original_name
- os
- patch
- path
- read
- rename
- repo_metadata
- report_progress
- symlink
- 模板
- 手表
- watch_tree
- 哪个
- workspace_root
attr
structure 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
|
字符串;或 Label;或 path;
默认值为 '' 输出文件的路径(相对于代码库目录)。 |
sha256
|
字符串;
默认值为 '' 下载的文件的预期 SHA-256 哈希值。此值必须与下载的文件的 SHA-256 哈希值一致。省略 SHA-256 会带来安全风险,因为远程文件可能会发生更改。省略此字段最多只会导致您的 build 变为非密封 build。为了方便开发,此属性为可选,但应在发布前设置。如果提供了哈希值,系统会先检查代码库缓存中是否存在具有指定哈希值的文件;只有在缓存中未找到该文件时,才会尝试下载。成功下载后,文件将添加到缓存中。 |
executable
|
bool;
default is False Set the executable flag on the created file, false by default. |
allow_fail
|
bool;
默认值为 False 如果设置,则在返回值中指示错误,而不是针对下载失败引发错误。 |
canonical_id
|
字符串;
默认值为 '' 如果设置,则将缓存命中限制为文件添加到缓存时具有相同规范 ID 的情况。默认情况下,缓存使用校验和( sha256 或 integrity )。
|
auth
|
dict;默认值为 {} 一个可选的字典,用于指定某些网址的身份验证信息。 |
headers
|
dict;
默认值为 {} 一个可选的字典,用于指定所有网址的 HTTP 标头。 |
integrity
|
字符串;
默认值为 '' 下载文件的预期校验和,采用子资源完整性格式。此值必须与下载的文件的校验和一致。省略校验和存在安全风险,因为远程文件可能会发生变化。省略此字段最多只会导致您的 build 变为非密封 build。为了方便开发,此属性为可选,但应在发布前设置。如果提供了校验和,系统会先检查代码库缓存中是否存在具有指定校验和的文件;只有在缓存中未找到该文件时,才会尝试下载。成功下载后,文件将添加到缓存中。 |
block
|
bool;
默认值为 True 如果设置为 false,调用会立即返回,并且不会返回常规返回值,而是返回一个具有单一方法 wait() 的令牌,该方法会阻塞,直到下载完成,然后返回常规返回值或像往常一样抛出异常。 |
download_and_extract
struct repository_ctx.download_and_extract(url, output='', sha256='', type='', strip_prefix='', allow_fail=False, canonical_id='', auth={}, headers={}, *, integrity='', rename_files={})
success
(一个标志,如果下载成功完成,则为 true
)以及一个包含字段 sha256
和 integrity
的文件哈希(如果下载成功)。如果 sha256
或 integrity
是用户指定的,强烈建议设置显式 canonical_id
。例如 get_default_canonical_id
参数
参数 | 说明 |
---|---|
url
|
字符串;或 字符串的可迭代对象;
必需 引用同一文件的镜像网址列表。 |
output
|
字符串;或 Label;或 path;
默认值为 '' 相对于代码库目录的归档解压缩目录的路径。 |
sha256
|
字符串;
默认值为 '' 下载的文件的预期 SHA-256 哈希值。此值必须与下载的文件的 SHA-256 哈希值一致。省略 SHA-256 会带来安全风险,因为远程文件可能会发生更改。省略此字段最多只会导致您的 build 变为非密封 build。为了方便开发,此属性为可选,但应在发布前设置。如果提供了哈希值,系统会先检查代码库缓存中是否存在具有指定哈希值的文件;只有在缓存中未找到该文件时,才会尝试下载。成功下载后,文件将添加到缓存中。 |
type
|
string;
默认值为 '' 下载文件的归档类型。默认情况下,系统会根据网址的文件扩展名确定归档类型。如果文件没有扩展名,您可以在此处明确指定“zip”“jar”“war”“aar”“nupkg”“whl”“tar”“tar.gz”“tgz”“tar.xz”“txz”“.tar.zst”“.tzst”“tar.bz2”“.tbz”“.ar”或“.deb”。 |
strip_prefix
|
字符串;
默认值为 '' 要从提取的文件中剥离的目录前缀。许多归档文件都包含一个顶级目录,其中包含归档文件中的所有文件。无需在 build_file 中反复指定此前缀,而是可以使用此字段从提取的文件中剥离该前缀。
为了实现兼容性,此参数也可以使用已弃用的名称 |
allow_fail
|
bool;
默认值为 False 如果设置,则在返回值中指示错误,而不是针对下载失败引发错误。 |
canonical_id
|
字符串;
默认值为 '' 如果设置,则将缓存命中限制为文件添加到缓存时具有相同规范 ID 的情况。默认情况下,缓存使用校验和( sha256 或 integrity )。
|
auth
|
dict;默认值为 {} 一个可选的字典,用于指定某些网址的身份验证信息。 |
headers
|
dict;
默认值为 {} 一个可选的字典,用于指定所有网址的 HTTP 标头。 |
integrity
|
字符串;
默认值为 '' 下载文件的预期校验和,采用子资源完整性格式。此值必须与下载的文件的校验和一致。省略校验和存在安全风险,因为远程文件可能会发生变化。省略此字段最多只会导致您的 build 变为非密封 build。为了方便开发,此属性为可选,但应在发布前设置。如果提供了校验和,系统会先检查代码库缓存中是否存在具有指定校验和的文件;只有在缓存中未找到该文件时,才会尝试下载。成功下载后,文件将添加到缓存中。 |
rename_files
|
字典;
默认值为 {} 一个可选的字典,用于指定在提取期间要重命名的文件。在进行任何目录前缀调整之前,名称与键完全匹配的归档条目将重命名为相应的值。此选项可用于提取包含非 Unicode 文件名的归档文件,或提取在不区分大小写的文件系统上会提取到同一路径的文件。 |
execute
exec_result repository_ctx.execute(arguments, timeout=600, environment={}, quiet=True, working_directory="")
timeout
(以秒为单位,默认值为 600 秒)限制。此方法会返回一个包含命令输出的 exec_result
结构。environment
映射可用于替换要传递给进程的某些环境变量。
参数
参数 | 说明 |
---|---|
arguments
|
sequence;
必需 实参列表,第一个元素应该是要执行的程序的路径。 |
timeout
|
int;
默认值为 600 命令的最长持续时间(以秒为单位,默认值为 600 秒)。 |
environment
|
dict;
默认值为 {} 强制将某些环境变量设置为传递给进程。该值可以是 None ,以移除环境变量。
|
quiet
|
bool;
默认值为 True 是否应将 stdout 和 stderr 输出到终端。 |
working_directory
|
string;
default is "" 命令执行的工作目录。 可以是相对于代码库根目录的路径,也可以是绝对路径。 默认目录为代码库的根目录。 |
extract
None
repository_ctx.extract(archive, output='', strip_prefix='', *, rename_files={}, watch_archive='auto')
参数
参数 | 说明 |
---|---|
archive
|
字符串;或标签;或路径;
必需 要解压缩的归档的路径(相对于代码库目录)。 |
output
|
字符串;或 Label;或 路径;
默认值为 '' 相对于代码库目录的归档解压缩目录的路径。 |
strip_prefix
|
字符串;
默认值为 '' 要从提取的文件中剥离的目录前缀。许多归档文件都包含一个顶级目录,其中包含归档文件中的所有文件。无需在 build_file 中反复指定此前缀,而是可以使用此字段从提取的文件中剥离该前缀。
为了实现兼容性,此参数也可以使用已弃用的名称 |
rename_files
|
字典;
默认值为 {} 一个可选的字典,用于指定在提取期间要重命名的文件。在进行任何目录前缀调整之前,名称与键完全匹配的归档条目将重命名为相应的值。此选项可用于提取包含非 Unicode 文件名的归档文件,或提取在不区分大小写的文件系统上会提取到同一路径的文件。 |
watch_archive
|
string;
默认值为 'auto' 是否监控归档文件。可以是字符串“yes”“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”不会尝试监视文件;传递“auto”仅会在合法的情况下尝试监视文件(如需了解详情,请参阅 watch() 文档)。
|
文件
None
repository_ctx.file(path, content='', executable=True, legacy_utf8=False)
参数
参数 | 说明 |
---|---|
path
|
字符串;或 Label;或 path;必需 要创建的文件的路径(相对于代码库目录)。 |
content
|
字符串;
默认值为 '' 要创建的文件的内容,默认为空。 |
executable
|
bool;
默认值为 True 在创建的文件上设置可执行标志,默认为 true。 |
legacy_utf8
|
bool;
默认值为 False 无操作。此参数已弃用,并将在未来的 Bazel 版本中移除。 |
getenv
string repository_ctx.getenv(name, default=None)
name
的值(如果存在),否则返回 default
。在增量构建时,对 name
所命名变量的值的任何更改都会导致重新提取此代码库。
参数
参数 | 说明 |
---|---|
name
|
字符串;
必需 所需环境变量的名称。 |
default
|
字符串;或 None ;
默认值为 None 如果找不到 name ,则返回的默认值。
|
None
。
name
string repository_ctx.name
original_name
获取最初指定为 name
的名称(当此代码库规则实例化时)。
original_name
string repository_ctx.original_name
name
属性的名称。此名称在外部代码库中不一定具有唯一性。请改用 name
获取外部代码库的规范名称。
os
repository_os repository_ctx.os
patch
None
repository_ctx.patch(patch_file, strip=0, *, watch_patch='auto')
参数
参数 | 说明 |
---|---|
patch_file
|
字符串;或标签;或路径;必需 要应用的补丁文件,可以是标签、相对路径或绝对路径。如果它是相对路径,则会解析为代码库目录。 |
strip
|
int;
默认值为 0 从文件名中剥离指定数量的前导组件。 |
watch_patch
|
string;
default is 'auto' Whether to watch the patch file. 可以是字符串“yes”“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”不会尝试监视文件;传递“auto”仅会在合法的情况下尝试监视文件(如需了解详情,请参阅 watch() 文档)。
|
路径
path repository_ctx.path(path)
repository_ctx
,则相对路径将相对于代码库目录进行解析。如果它是 module_ctx
,则相对路径将相对于此模块扩展程序的临时工作目录进行解析。如果路径是标签,则会解析为相应文件的路径。请注意,远程代码库和模块扩展在分析阶段执行,因此不能依赖于目标结果(标签应指向非生成的文件)。如果 path 是路径,则会原样返回该路径。
参数
参数 | 说明 |
---|---|
path
|
string;或 Label;或 path;
必需 用于创建路径的 string 、Label 或 path 。
|
读取
string repository_ctx.read(path, *, watch='auto')
参数
参数 | 说明 |
---|---|
path
|
string;或 Label;或 path;
必需 要读取的文件的路径。 |
watch
|
字符串;
默认值为 'auto' 是否监控文件。可以是字符串“yes”“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”不会尝试监视文件;传递“auto”仅会在合法的情况下尝试监视文件(如需了解详情,请参阅 watch() 文档)。
|
重命名
None
repository_ctx.rename(src, dst)
src
重命名为 dst
。系统会根据需要创建父目录。如果目标路径已存在,则会失败。这两个路径都必须位于代码库中。
参数
参数 | 说明 |
---|---|
src
|
string;或 Label;或 path;必需 要重命名的现有文件或目录的路径,相对于仓库目录。 |
dst
|
字符串;或 Label;或 路径;必需 文件或目录将重命名为的新名称,相对于代码库目录。 |
repo_metadata
repo_metadata repository_ctx.repo_metadata(*, reproducible=False, attrs_for_reproducibility={})
参数
参数 | 说明 |
---|---|
reproducible
|
bool;
默认值为 False 表示此代码库可以重复获取;也就是说,如果再次获取此代码库时,输入属性、代码库规则定义、受监控的文件和环境变量等完全相同,则会生成完全相同的输出。即使其他未跟踪的条件发生变化(例如来自互联网的信息、工作区根目录的路径、运行任意可执行文件的输出等),此属性也需要保持不变。如果设置为 True,则允许在工作区之间缓存提取的代码库内容。 请注意,将此属性设置为 True 并不能保证在代码库内容缓存中进行缓存;例如,本地代码库规则永远不会缓存。 |
attrs_for_reproducibility
|
dict;默认值为 {} 如果 reproducible 为 False,则可以指定此参数来告知 Bazel 要更改原始 repo 规则的哪些属性才能使其可重现。
|
report_progress
None
repository_ctx.report_progress(status='')
参数
参数 | 说明 |
---|---|
status
|
字符串;
默认值为 '' string ,用于描述提取进度的当前状态。
|
符号链接
None
repository_ctx.symlink(target, link_name)
参数
参数 | 说明 |
---|---|
target
|
字符串;或标签;或路径;必需 符号链接应指向的路径。 |
link_name
|
string;或 Label;或 path;必需 要创建的符号链接的路径。 |
模板
None
repository_ctx.template(path, template, substitutions={}, executable=True, *, watch_template='auto')
template
生成新文件。template
中出现的每个 substitutions
的键都将被替换为相应的值。结果以 path
格式写入。您可以设置一个可选的 executable
实参(默认为 true)来开启或关闭可执行位。
参数
参数 | 说明 |
---|---|
path
|
字符串;或 Label;或 path;必需 要创建的文件的路径(相对于代码库目录)。 |
template
|
字符串;或标签;或路径;
必需 模板文件的路径。 |
substitutions
|
dict;默认值为 {} 展开模板时要进行的替换。 |
executable
|
bool;
默认值为 True 在创建的文件上设置可执行标志,默认为 true。 |
watch_template
|
string;
默认值为 'auto' 是否监控模板文件。可以是字符串“yes”“no”或“auto”。传递“yes”相当于立即调用 watch() 方法;传递“no”不会尝试监视文件;传递“auto”仅会在合法的情况下尝试监视文件(如需了解详情,请参阅 watch() 文档)。
|
手表
None
repository_ctx.watch(path)
“更改”包括文件内容的变化(如果路径是文件);路径从文件变为目录或从目录变为文件;以及路径开始存在或不再存在。值得注意的是,如果路径是目录,则此操作不包括对该目录下任何文件的更改。为此,请改用 path.readdir()
。
请注意,尝试观看当前正在提取的代码库内或当前模块扩展程序的工作目录内的路径会导致错误。如果模块扩展程序尝试监控当前 Bazel 工作区之外的路径,也会导致错误。
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;
必需 要监控的文件的路径。 |
watch_tree
None
repository_ctx.watch_tree(path)
请注意,尝试监控当前正在提取的代码库中的路径会导致错误。
参数
参数 | 说明 |
---|---|
path
|
字符串;或标签;或路径;必需 要监控的目录树的路径。 |
哪个
path repository_ctx.which(program)
path
;如果路径中没有此类程序,则返回 None
。
参数
参数 | 说明 |
---|---|
program
|
string;
required Program to find in the path. |
None
。
workspace_root
path repository_ctx.workspace_root