• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""A module defining dependencies of the `cargo-bazel` Rust target"""
2
3load("@rules_rust//rust:defs.bzl", "rust_common")
4load("//crate_universe:deps_bootstrap.bzl", "cargo_bazel_bootstrap")
5load("//crate_universe/3rdparty:third_party_deps.bzl", "third_party_deps")
6load("//crate_universe/3rdparty/crates:crates.bzl", _vendor_crate_repositories = "crate_repositories")
7load("//crate_universe/private:vendor_utils.bzl", "crates_vendor_deps")
8load("//crate_universe/tools/cross_installer:cross_installer_deps.bzl", "cross_installer_deps")
9
10def crate_universe_dependencies(rust_version = rust_common.default_version, bootstrap = False, **kwargs):
11    """Define dependencies of the `cargo-bazel` Rust target
12
13    Args:
14        rust_version (str, optional): The version of rust to use when generating dependencies.
15        bootstrap (bool, optional): If true, a `cargo_bootstrap_repository` target will be generated.
16        **kwargs: Arguments to pass through to cargo_bazel_bootstrap.
17
18    Returns:
19        list[struct(repo=str, is_dev_dep=bool)]: A list of the repositories
20        defined by this macro.
21    """
22    third_party_deps()
23
24    if bootstrap:
25        cargo_bazel_bootstrap(rust_version = rust_version, **kwargs)
26
27    direct_deps = _vendor_crate_repositories()
28    direct_deps.extend(crates_vendor_deps())
29    cross_installer_deps()
30    return direct_deps
31