| """This module defines the cipd_install repository rule. | 
 |  | 
 | The cipd_install rule is a wrapper around http_archive to download the CIPD | 
 | package at the specified version over HTTPS. This does not require depot_tools nor a cipd binary | 
 | on the host machine. | 
 | """ | 
 |  | 
 | load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") | 
 |  | 
 | def cipd_install( | 
 |         name, | 
 |         cipd_package, | 
 |         sha256, | 
 |         tag, | 
 |         build_file = None, | 
 |         build_file_content = None, | 
 |         postinstall_cmds_posix = None, | 
 |         postinstall_cmds_win = None): | 
 |     """Download and extract the zipped archive from CIPD, making it available for Bazel rules. | 
 |  | 
 |     Args: | 
 |         name: The name of the Bazel "repository" created. For example, if name is "alpha_beta", | 
 |             the full Bazel label will start with "@alpha_beta//". | 
 |         cipd_package: The full name of the CIPD package. This is a "path" from the root of CIPD. | 
 |             This should be a publicly accessible package, as authentication is not | 
 |             supported. | 
 |         sha256: The sha256 hash of the zip archive downloaded from CIPD. This should match the | 
 |             official CIPD website. | 
 |         tag: Represents the version of the CIPD package to download, e.g. "git_package:abc123...". | 
 |         build_file: The file to use as the BUILD.bazel file for this repository. Such build files | 
 |             typically contain "exports_files" and/or "filegroup" rules. Since CIPD packages do not | 
 |             include BUILD.bazel files, we must provide our own. Either build_file or | 
 |             build_file_content can be specified, but not both. | 
 |         build_file_content: The content for the BUILD file for this repository. Either build_file | 
 |             or build_file_content can be specified, but not both. | 
 |         postinstall_cmds_posix: Optional Bash commands to run on Mac/Linux after download. | 
 |         postinstall_cmds_win: Optional Powershell commands to run on Windows after download. | 
 |     """ | 
 |     cipd_url = "https://chrome-infra-packages.appspot.com/dl/" | 
 |     cipd_url += cipd_package | 
 |     cipd_url += "/+/" | 
 |     cipd_url += tag | 
 |  | 
 |     mirror_url = "https://storage.googleapis.com/skia-world-readable/bazel/" | 
 |     mirror_url += sha256 | 
 |     mirror_url += ".zip" | 
 |  | 
 |     http_archive( | 
 |         name = name, | 
 |         sha256 = sha256, | 
 |         urls = [ | 
 |             cipd_url, | 
 |             mirror_url, | 
 |         ], | 
 |         type = "zip", | 
 |         build_file = build_file, | 
 |         build_file_content = build_file_content, | 
 |         patch_cmds = postinstall_cmds_posix, | 
 |         patch_cmds_win = postinstall_cmds_win, | 
 |     ) |