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"], )