• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("//rust:defs.bzl", "rust_binary", "rust_clippy", "rust_library")
2load("//tools:tool_utils.bzl", "aspect_repository")
3
4exports_files(
5    [
6        "rustfmt.toml",
7        "rustfmt_utils.bzl",
8    ],
9    visibility = ["//visibility:public"],
10)
11
12rust_library(
13    name = "rustfmt_lib",
14    srcs = glob(
15        include = ["src/**/*.rs"],
16        exclude = [
17            "src/**/*main.rs",
18            "src/bin/**",
19        ],
20    ),
21    data = [
22        "//:rustfmt.toml",
23        "//rust/toolchain:current_rustfmt_toolchain",
24    ],
25    edition = "2018",
26    rustc_env = {
27        "RUSTFMT": "$(rootpath //rust/toolchain:current_rustfmt_toolchain)",
28        "RUSTFMT_CONFIG": "$(rootpath //:rustfmt.toml)",
29    },
30    deps = [
31        "//tools/runfiles",
32    ],
33)
34
35rust_binary(
36    name = "rustfmt",
37    srcs = [
38        "src/main.rs",
39    ],
40    data = [
41        "//:rustfmt.toml",
42    ],
43    edition = "2018",
44    rustc_env = {
45        "ASPECT_REPOSITORY": aspect_repository(),
46        "RUST_DEFAULT_EDITION": "$(RUST_DEFAULT_EDITION)",
47    },
48    toolchains = [
49        "@rules_rust//rust/toolchain:current_rust_toolchain",
50        "@rules_rust//rust/toolchain:current_rustfmt_toolchain",
51    ],
52    visibility = ["//visibility:public"],
53    deps = [
54        ":rustfmt_lib",
55        "//util/label",
56    ],
57)
58
59rust_binary(
60    name = "rustfmt_test",
61    srcs = [
62        "src/bin/test_main.rs",
63    ],
64    edition = "2018",
65    visibility = ["//visibility:public"],
66    deps = [
67        ":rustfmt_lib",
68        "//tools/runfiles",
69    ],
70)
71
72rust_clippy(
73    name = "rustfmt_clippy",
74    testonly = True,
75    visibility = ["//visibility:private"],
76    deps = [
77        ":rustfmt",
78    ],
79)
80