blob: ecbc1a9d24f29d73a14402e8d7c5cc62abdea120 [file] [log] [blame]
load("//rust:defs.bzl", "rust_binary", "rust_clippy", "rust_library")
load("//tools:tool_utils.bzl", "aspect_repository")
exports_files(
[
"rustfmt.toml",
"rustfmt_utils.bzl",
],
visibility = ["//visibility:public"],
)
rust_library(
name = "rustfmt_lib",
srcs = glob(
include = ["src/**/*.rs"],
exclude = [
"src/**/*main.rs",
"src/bin/**",
],
),
data = [
"//:rustfmt.toml",
"//rust/toolchain:current_rustfmt_toolchain_for_target",
],
edition = "2018",
rustc_env = {
"RUSTFMT": "$(rlocationpath //rust/toolchain:current_rustfmt_toolchain_for_target)",
"RUSTFMT_CONFIG": "$(rlocationpath //:rustfmt.toml)",
},
deps = [
"//tools/runfiles",
],
)
# Deprecated but present for compatibility.
alias(
name = "rustfmt",
actual = ":target_aware_rustfmt",
deprecation = "Prefer //tools/upstream_wrapper:rustfmt",
visibility = ["//visibility:public"],
)
# This is a wrapper around the upstream rustfmt binary which is aware of targets,
# and will try to do things like set the correct edition for files when formatting them based on their owning targets.
rust_binary(
name = "target_aware_rustfmt",
srcs = [
"src/main.rs",
],
data = [
"//:rustfmt.toml",
],
edition = "2018",
rustc_env = {
"ASPECT_REPOSITORY": aspect_repository(),
"RUST_DEFAULT_EDITION": "$(RUST_DEFAULT_EDITION)",
},
toolchains = ["@rules_rust//rust/toolchain:current_rust_toolchain"],
visibility = ["//visibility:public"],
deps = [
":rustfmt_lib",
"//util/label",
],
)
rust_binary(
name = "rustfmt_test",
srcs = [
"src/bin/test_main.rs",
],
edition = "2018",
visibility = ["//visibility:public"],
deps = [
":rustfmt_lib",
"//tools/runfiles",
],
)
rust_clippy(
name = "rustfmt_clippy",
testonly = True,
visibility = ["//visibility:private"],
deps = [
":target_aware_rustfmt",
],
)
# Deprecated but present for compatibility.
alias(
name = "upstream_rustfmt",
actual = "//tools/upstream_wrapper:rustfmt",
deprecation = "Prefer //tools/upstream_wrapper:rustfmt",
visibility = ["//visibility:public"],
)