load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_test")
exports_files(
[
"Cargo.toml",
"src/main.rs",
"src/extract.rs",
"src/extractor.rs",
"src/compile.rs",
"src/compile_folder.rs",
"src/verify.rs",
"src/id_generator.rs",
"src/formatters/mod.rs",
"src/formatters/default.rs",
"src/formatters/simple.rs",
"src/formatters/transifex.rs",
"src/formatters/smartling.rs",
"src/formatters/lokalise.rs",
"src/formatters/crowdin.rs",
],
visibility = ["//visibility:public"],
)
COMMON_DEPS = [
"//rust/icu_messageformat_parser",
"//rust/icu_skeleton_parser",
"@crates//:anyhow",
"@crates//:base64",
"@crates//:clap",
"@crates//:glob",
"@crates//:hex",
"@crates//:oxc",
"@crates//:oxc_allocator",
"@crates//:oxc_ast",
"@crates//:oxc_parser",
"@crates//:oxc_span",
"@crates//:serde",
"@crates//:serde_json",
"@crates//:sha2",
]
TEST_DEPS = COMMON_DEPS + [
"@crates//:tempfile",
]
rust_binary(
name = "formatjs_cli",
srcs = [
"src/compile.rs",
"src/compile_folder.rs",
"src/extract.rs",
"src/extractor.rs",
"src/formatters/crowdin.rs",
"src/formatters/default.rs",
"src/formatters/lokalise.rs",
"src/formatters/mod.rs",
"src/formatters/simple.rs",
"src/formatters/smartling.rs",
"src/formatters/transifex.rs",
"src/id_generator.rs",
"src/main.rs",
"src/verify.rs",
],
crate_name = "formatjs",
edition = "2024",
visibility = ["//visibility:public"],
deps = COMMON_DEPS,
)
rust_test(
name = "formatjs_cli_test",
crate = ":formatjs_cli",
data = ["//packages/ts-transformer:test_fixtures"],
deps = TEST_DEPS,
)
alias(
name = "formatjs",
actual = ":formatjs_cli",
visibility = ["//visibility:public"],
)
genrule(
name = "release_binary",
srcs = [":formatjs_cli"],
outs = ["formatjs_cli_release"],
cmd = "cp $< $@ && chmod +x $@",
visibility = ["//visibility:public"],
)