The following functions can be loaded from
@bazel_tools//tools/build_defs/repo:utils.bzl.
Utils for manipulating external repositories, once fetched.
Setup
These utilities are intended to be used by other repository rules. They can be loaded as follows.
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)
Utility function for downloading remote files.
This rule is intended to be used in the implementation function of
a repository rule. It assumes the parameters remote_file_urls and
remote_file_integrity to be present in ctx.attr.
Parameters
ctx | 
required.
 The repository context of the repository rule calling this utility function.  | 
auth | 
optional.
default is None
An optional dict specifying authentication information for some of the URLs.  | 
get_auth
load("@bazel//tools/build_defs/repo:utils.bzl", "get_auth")
get_auth(ctx, urls)
Utility function to obtain the correct auth dict for a list of urls from .netrc file.
Support optional netrc and auth_patterns attributes if available.
Parameters
ctx | 
required.
 The repository context of the repository rule calling this utility function.  | 
urls | 
required.
 the list of urls to read  | 
Returns
the auth dict which can be passed to repository_ctx.download
maybe
load("@bazel//tools/build_defs/repo:utils.bzl", "maybe")
maybe(repo_rule, name, kwargs)
Utility function for only adding a repository if it's not already present.
This is to implement safe repositories.bzl macro documented in https://bazel.build/rules/deploying#dependencies.
Parameters
repo_rule | 
required.
 repository rule function.  | 
name | 
required.
 name of the repository to create.  | 
kwargs | 
optional.
 remaining arguments that are passed to the repo_rule function.  | 
Returns
Nothing, defines the repository when needed as a side-effect.
parse_netrc
load("@bazel//tools/build_defs/repo:utils.bzl", "parse_netrc")
parse_netrc(contents, filename)
Utility function to parse at least a basic .netrc file.
Parameters
contents | 
required.
 input for the parser.  | 
filename | 
optional.
default is None
filename to use in error messages, if any.  | 
Returns
dict mapping a machine names to a dict with the information provided about them
patch
load("@bazel//tools/build_defs/repo:utils.bzl", "patch")
patch(ctx, patches, patch_cmds, patch_cmds_win, patch_tool, patch_args, auth)
Implementation of patching an already extracted repository.
This rule is intended to be used in the implementation function of
a repository rule. If the parameters patches, patch_tool,
patch_args, patch_cmds and patch_cmds_win are not specified
then they are taken from ctx.attr.
Parameters
ctx | 
required.
 The repository context of the repository rule calling this utility function.  | 
patches | 
optional.
default is None
The patch files to apply. List of strings, Labels, or paths.  | 
patch_cmds | 
optional.
default is None
Bash commands to run for patching, passed one at a time to bash -c. List of strings  | 
patch_cmds_win | 
optional.
default is None
Powershell commands to run for patching, passed one at a time to powershell /c. List of strings. If the boolean value of this parameter is false, patch_cmds will be used and this parameter will be ignored.  | 
patch_tool | 
optional.
default is None
Path of the patch tool to execute for applying patches. String.  | 
patch_args | 
optional.
default is None
Arguments to pass to the patch tool. List of strings.  | 
auth | 
optional.
default is None
An optional dict specifying authentication information for some of the URLs.  | 
read_netrc
load("@bazel//tools/build_defs/repo:utils.bzl", "read_netrc")
read_netrc(ctx, filename)
Utility function to parse at least a basic .netrc file.
Parameters
ctx | 
required.
 The repository context of the repository rule calling this utility function.  | 
filename | 
required.
 the name of the .netrc file to read  | 
Returns
dict mapping a machine names to a dict with the information provided about them
read_user_netrc
load("@bazel//tools/build_defs/repo:utils.bzl", "read_user_netrc")
read_user_netrc(ctx)
Read user's default netrc file.
Parameters
ctx | 
required.
 The repository context of the repository rule calling this utility function.  | 
Returns
dict mapping a machine names to a dict with the information provided about them.
update_attrs
load("@bazel//tools/build_defs/repo:utils.bzl", "update_attrs")
update_attrs(orig, keys, override)
Utility function for altering and adding the specified attributes to a particular repository rule invocation.
This is used to make a rule reproducible.
Parameters
orig | 
required.
 dict of actually set attributes (either explicitly or implicitly) by a particular rule invocation  | 
keys | 
required.
 complete set of attributes defined on this rule  | 
override | 
required.
 dict of attributes to override or add to orig  | 
Returns
dict of attributes with the keys from override inserted/updated
use_netrc
load("@bazel//tools/build_defs/repo:utils.bzl", "use_netrc")
use_netrc(netrc, urls, patterns)
Compute an auth dict from a parsed netrc file and a list of URLs.
Parameters
netrc | 
required.
 a netrc file already parsed to a dict, e.g., as obtained from read_netrc  | 
urls | 
required.
 a list of URLs.  | 
patterns | 
required.
 optional dict of url to authorization patterns  | 
Returns
dict suitable as auth argument for ctx.download; more precisely, the dict will map all URLs where the netrc file provides login and password to a dict containing the corresponding login, password and optional authorization pattern, as well as the mapping of "type" to "basic" or "pattern".
workspace_and_buildfile
load("@bazel//tools/build_defs/repo:utils.bzl", "workspace_and_buildfile")
workspace_and_buildfile(ctx)
Utility function for writing a BUILD file.
This rule is intended to be used in the implementation function of a
repository rule.
It assumes the parameters name, build_file, and build_file_content to
be present in ctx.attr; the latter two possibly with value None.
Parameters
ctx | 
required.
 The repository context of the repository rule calling this utility function.  |