• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""Utility functions for use with the `crates_vendor` rule"""
2
3load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
4load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
5
6_BUILDIFIER_VERSION = "5.0.1"
7_BUILDIFIER_URL_TEMPLATE = "https://github.com/bazelbuild/buildtools/releases/download/{version}/{bin}"
8_BUILDIFIER_SHA256S = {
9    "buildifier-darwin-amd64": "2cb0a54683633ef6de4e0491072e22e66ac9c6389051432b76200deeeeaf93fb",
10    "buildifier-darwin-arm64": "4da23315f0dccabf878c8227fddbccf35545b23b3cb6225bfcf3107689cc4364",
11    "buildifier-linux-amd64": "3ed7358c7c6a1ca216dc566e9054fd0b97a1482cb0b7e61092be887d42615c5d",
12    "buildifier-linux-arm64": "c657c628fca72b7e0446f1a542231722a10ba4321597bd6f6249a5da6060b6ff",
13    "buildifier-windows-amd64.exe": "45e13b2951e4c611d346dacdaf0aafaa484045a3e7300fbc5dd01a896a688177",
14}
15
16def crates_vendor_deps():
17    """Define dependencies of the `crates_vendor` rule
18
19    Returns:
20        list[struct(repo=str, is_dev_dep=bool)]: List of the dependency repositories.
21    """
22    direct_deps = []
23
24    for bin, sha256 in _BUILDIFIER_SHA256S.items():
25        repo = "cargo_bazel.{}".format(bin)
26        maybe(
27            http_file,
28            name = repo,
29            urls = [_BUILDIFIER_URL_TEMPLATE.format(
30                bin = bin,
31                version = _BUILDIFIER_VERSION,
32            )],
33            sha256 = sha256,
34            downloaded_file_path = "buildifier.exe",
35            executable = True,
36        )
37        direct_deps.append(struct(repo = repo, is_dev_dep = False))
38
39    return direct_deps
40
41# buildifier: disable=unnamed-macro
42def crates_vendor_deps_targets():
43    """Define dependencies of the `crates_vendor` rule"""
44
45    native.config_setting(
46        name = "linux_amd64",
47        constraint_values = ["@platforms//os:linux", "@platforms//cpu:x86_64"],
48        visibility = ["//visibility:public"],
49    )
50
51    native.config_setting(
52        name = "linux_arm64",
53        constraint_values = ["@platforms//os:linux", "@platforms//cpu:arm64"],
54        visibility = ["//visibility:public"],
55    )
56
57    native.config_setting(
58        name = "macos_amd64",
59        constraint_values = ["@platforms//os:macos", "@platforms//cpu:x86_64"],
60        visibility = ["//visibility:public"],
61    )
62
63    native.config_setting(
64        name = "macos_arm64",
65        constraint_values = ["@platforms//os:macos", "@platforms//cpu:arm64"],
66        visibility = ["//visibility:public"],
67    )
68
69    native.config_setting(
70        name = "windows",
71        constraint_values = ["@platforms//os:windows"],
72        visibility = ["//visibility:public"],
73    )
74
75    native.alias(
76        name = "buildifier",
77        actual = select({
78            ":linux_amd64": "@cargo_bazel.buildifier-linux-amd64//file",
79            ":linux_arm64": "@cargo_bazel.buildifier-linux-arm64//file",
80            ":macos_amd64": "@cargo_bazel.buildifier-darwin-amd64//file",
81            ":macos_arm64": "@cargo_bazel.buildifier-darwin-arm64//file",
82            ":windows": "@cargo_bazel.buildifier-windows-amd64.exe//file",
83        }),
84        visibility = ["//visibility:public"],
85    )
86