utils 代码库规则

以下函数可以从 @bazel_tools//tools/build_defs/repo:utils.bzl. 加载。

用于在提取外部代码库后对其进行操作的实用程序。

设置

这些实用程序旨在供其他代码库规则使用。它们 可以按如下方式加载。

load(
    "@bazel_tools//tools/build_defs/repo:utils.bzl",
    "workspace_and_buildfile",
    "patch",
    "update_attrs",
)

download_remote_files

load("@bazel//tools/build_defs/repo:utils.bzl", "download_remote_files")

download_remote_files(ctx, auth)

用于下载远程文件的实用程序函数。

此规则旨在用于 代码库规则的实现函数。它假定参数 remote_file_urlsremote_file_integrity 存在于 ctx.attr 中。

参数

ctx 必需。

调用此实用程序 函数。 的代码库规则的代码库上下文。

auth 可选。 默认值为 None

一个可选字典,用于指定某些网址的身份验证信息。

get_auth

load("@bazel//tools/build_defs/repo:utils.bzl", "get_auth")

get_auth(ctx, urls)

用于从 .netrc 文件获取网址列表的正确身份验证字典的实用程序函数。

如果可用,则支持可选的 netrc 和 auth_patterns 属性。

参数

ctx 必需。

调用此实用程序 函数。 的代码库规则的代码库上下文。

urls 必需。

要读取的网址列表

返回

可传递给 repository_ctx.download 的身份验证字典

maybe

load("@bazel//tools/build_defs/repo:utils.bzl", "maybe")

maybe(repo_rule, name, **kwargs)

用于仅在代码库尚不存在时添加代码库的实用程序函数。

这是为了实现 https://bazel.build/rules/deploying#dependencies 中记录的安全 repositories.bzl 宏。

参数

repo_rule 必需。

代码库规则函数。

name 必需。

要创建的代码库的名称。

kwargs 可选。

传递给 repo_rule 函数的其余实参。

返回

无,在需要时将代码库定义为副作用。

parse_netrc

load("@bazel//tools/build_defs/repo:utils.bzl", "parse_netrc")

parse_netrc(contents, filename)

用于解析至少一个基本 .netrc 文件的实用程序函数。

参数

contents 必需。

解析器的输入。

filename 可选。 默认值为 None

要在错误消息中使用的文件名(如果有)。

返回

将机器名称映射到包含有关这些机器的信息的字典的字典

patch

load("@bazel//tools/build_defs/repo:utils.bzl", "patch")

patch(ctx, patches, patch_cmds, patch_cmds_win, patch_tool, patch_args, auth)

用于修补已提取的代码库的实现。

此规则旨在用于 代码库规则的实现函数。如果未指定参数 patchespatch_toolpatch_argspatch_cmdspatch_cmds_win, 则会从 ctx.attr 中获取这些参数。

参数

ctx 必需。

调用此实用程序 函数。 的代码库规则的代码库上下文。

patches 可选。 默认值为 None

要应用的补丁文件。字符串、标签或路径列表。

patch_cmds 可选。 默认值为 None

用于修补的 Bash 命令,一次一个地传递给 bash -c。字符串列表

patch_cmds_win 可选。 默认值为 None

用于修补的 Powershell 命令,一次一个地传递给 powershell /c。字符串列表。如果此参数的 布尔值为 false,则将使用 patch_cmds,并且此参数将被忽略。

patch_tool 可选。 默认值为 None

要执行以应用 补丁的补丁工具的路径。字符串。

patch_args 可选。 默认值为 None

要传递给补丁工具的实参。字符串列表。

auth 可选。 默认值为 None

一个可选字典,用于指定某些网址的身份验证信息。

read_netrc

load("@bazel//tools/build_defs/repo:utils.bzl", "read_netrc")

read_netrc(ctx, filename)

用于解析至少一个基本 .netrc 文件的实用程序函数。

参数

ctx 必需。

调用此实用程序 函数。 的代码库规则的代码库上下文。

filename 必需。

要读取的 .netrc 文件的名称

返回

将机器名称映射到包含有关这些机器的信息的字典的字典

read_user_netrc

load("@bazel//tools/build_defs/repo:utils.bzl", "read_user_netrc")

read_user_netrc(ctx)

读取用户的默认 netrc 文件。

参数

ctx 必需。

调用此实用程序函数的代码库规则的代码库上下文。

返回

将机器名称映射到包含有关这些机器的信息的字典的字典。

update_attrs

load("@bazel//tools/build_defs/repo:utils.bzl", "update_attrs")

update_attrs(orig, keys, override)

用于更改特定代码库规则调用并向其添加指定属性的实用程序函数。

这用于使规则可重现。

参数

orig 必需。

由特定规则调用实际设置的属性(显式或隐式)的字典

keys 必需。

在此规则上定义的完整属性集

override 必需。

要替换或添加到 orig 的属性的字典

返回

包含插入/更新的 override 中的键的属性的字典

use_netrc

load("@bazel//tools/build_defs/repo:utils.bzl", "use_netrc")

use_netrc(netrc, urls, patterns)

根据已解析的 netrc 文件和网址列表计算身份验证字典。

参数

netrc 必需。

已解析为字典的 netrc 文件,例如从 read_netrc 获取的文件

urls 必需。

网址列表。

patterns 必需。

网址到授权模式的可选字典

返回

适合作为 ctx.download 的身份验证实参的字典;更准确地说,该字典 会将 netrc 文件提供登录名和密码的所有网址映射到包含相应登录名、密码和可选授权模式的 字典,以及“type”到“basic”或“pattern”的 映射。

workspace_and_buildfile

load("@bazel//tools/build_defs/repo:utils.bzl", "workspace_and_buildfile")

workspace_and_buildfile(ctx)

用于写入 WORKSPACE 和 BUILD 文件(如果需要)的实用程序函数。

此规则旨在用于 代码库规则 的实现函数。它假定参数 namebuild_filebuild_file_contentworkspace_fileworkspace_file_content 存在于 ctx.attr 中;后四个参数的值可能为 None。

参数

ctx 必需。

调用此实用程序 函数。 的代码库规则的代码库上下文。