Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 8 additions & 12 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module(
# https://bazelbuild.slack.com/archives/CA31HN1T3/p1750406404452179

# NOTE:
# compatibility_level = 0,
compatibility_level = 0,
#
# Bumping compatibility_level too frequently is discouraged because it's
# very disruptive: as soon as a module is requested at two different
Expand All @@ -30,22 +30,18 @@ module(
# (breaking) change.
)

# Core dependencies required by rules_formatjs
bazel_dep(name = "bazel_skylib", version = "1.8.2")
bazel_dep(name = "package_metadata", version = "0.0.6")
bazel_dep(name = "jq.bzl", version = "0.4.0") # JSON manipulation in aggregation aspect
bazel_dep(name = "package_metadata", version = "0.0.6") # Package metadata for BCR
bazel_dep(name = "platforms", version = "1.0.0")

# jq for JSON manipulation in aggregation aspect
bazel_dep(name = "jq.bzl", version = "0.4.0")

# rules_shell for sh_test in verify rule
bazel_dep(name = "rules_shell", version = "0.6.1")

bazel_dep(name = "gazelle", version = "0.47.0", dev_dependency = True, repo_name = "bazel_gazelle")
bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.8.2", dev_dependency = True)
# Development dependencies
bazel_dep(name = "bazel_lib", version = "3.0.0", dev_dependency = True)
bazel_dep(name = "bazelrc-preset.bzl", version = "1.8.0", dev_dependency = True)
bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.8.2", dev_dependency = True)
bazel_dep(name = "buildifier_prebuilt", version = "8.2.1", dev_dependency = True)

bazel_dep(name = "bazelrc-preset.bzl", version = "1.8.0")
bazel_dep(name = "gazelle", version = "0.47.0", dev_dependency = True, repo_name = "bazel_gazelle")

# FormatJS CLI toolchain
formatjs_cli = use_extension("//formatjs_cli:extensions.bzl", "formatjs_cli")
Expand Down
3 changes: 1 addition & 2 deletions MODULE.bazel.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 1 addition & 5 deletions examples/aggregate/MODULE.bazel.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 1 addition & 5 deletions examples/simple/MODULE.bazel.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions examples/simple/tests_verify/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ formatjs_verify_test(
# Test 2: Missing keys should fail (negative test)
formatjs_verify_test(
name = "test_missing_keys_fails",
expected_exit_code = 1, # Expect failure
expected_exit_code = 1,
source_locale = "en",
translations = [
"en.json",
Expand All @@ -27,7 +27,7 @@ formatjs_verify_test(
# Test 3: Extra keys should fail (negative test)
formatjs_verify_test(
name = "test_extra_keys_fails",
expected_exit_code = 1, # Expect failure
expected_exit_code = 1,
source_locale = "en",
translations = [
"en.json",
Expand All @@ -38,7 +38,7 @@ formatjs_verify_test(
# Test 4: Invalid format should fail (negative test)
formatjs_verify_test(
name = "test_invalid_format_fails",
expected_exit_code = 1, # Expect failure
expected_exit_code = 1,
source_locale = "en",
translations = [
"en.json",
Expand All @@ -59,7 +59,7 @@ formatjs_verify_test(
],
)

# Test 6: Only check extra keys (expected to fail)
# Test 6: Only check extra keys (passes - not checking for missing keys)
formatjs_verify_test(
name = "test_only_extra_keys",
check_extra_keys = True,
Expand All @@ -68,7 +68,7 @@ formatjs_verify_test(
source_locale = "en",
translations = [
"en.json",
"de_missing_keys.json", # Missing keys but we're only checking for extra keys
"de_missing_keys.json", # Missing keys but we're only checking for extra keys - should pass
],
)

Expand Down
3 changes: 1 addition & 2 deletions examples/simple/tests_verify/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ This directory contains comprehensive tests for the `formatjs_verify_test` rule.
- Tests: en.json, es.json, fr.json
- Expected: ✅ Pass

### Negative Tests (use `expected_exit_code=1`)
### Negative Tests (using `expected_exit_code=1`)

These tests verify error detection by expecting the formatjs verify command to fail:

Expand Down Expand Up @@ -106,7 +106,6 @@ formatjs_verify_test(
"incomplete.json", # Missing some keys
],
expected_exit_code = 1, # We expect this to fail
formatjs_cli = "//:formatjs_cli",
)
```

Expand Down
4 changes: 4 additions & 0 deletions formatjs/aggregate.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ Aggregation can be used via:
This module depends on:
- `jq.bzl` toolchain for JSON merging and sorting operations
- `FormatjsExtractInfo` provider from extract.bzl for message collection

For more information about FormatJS message aggregation workflows, see:
https://formatjs.github.io/docs/tooling/cli
"""

load(":extract.bzl", "FormatjsExtractInfo")
Expand Down Expand Up @@ -435,5 +438,6 @@ formatjs_aggregate = rule(
- `formatjs_aggregate_aspect`: Lower-level aspect for advanced use cases
- `formatjs_verify_test`: Verify translations against aggregated messages
- `formatjs_compile`: Compile aggregated messages for production
- FormatJS CLI documentation: https://formatjs.github.io/docs/tooling/cli
""",
)
4 changes: 4 additions & 0 deletions formatjs/compile.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ reduced bundle size in production applications.

Compiled messages are optimized for runtime performance and can be used directly
with react-intl or other FormatJS libraries.

For more information about the FormatJS CLI and its compilation features, see:
https://formatjs.github.io/docs/tooling/cli
"""

def _formatjs_compile_impl(ctx):
Expand Down Expand Up @@ -111,6 +114,7 @@ formatjs_compile = rule(

- `formatjs_extract`: Extract messages from source files
- `formatjs_verify_test`: Verify translations before compilation
- FormatJS CLI documentation: https://formatjs.github.io/docs/tooling/cli
""",
attrs = {
"src": attr.label(
Expand Down
4 changes: 4 additions & 0 deletions formatjs/extract.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ The FormatJS CLI supports various message formats including:

Message IDs can be automatically generated using content-based hashing patterns,
ensuring consistent IDs across your codebase.

For more information about the FormatJS CLI and its extraction features, see:
https://formatjs.github.io/docs/tooling/cli
"""

FormatjsExtractInfo = provider(
Expand Down Expand Up @@ -150,6 +153,7 @@ formatjs_extract = rule(
- `formatjs_compile`: Compile messages for runtime use
- `formatjs_aggregate`: Merge messages from multiple extraction targets
- `formatjs_verify_test`: Verify translation files against extracted messages
- FormatJS CLI documentation: https://formatjs.github.io/docs/tooling/cli
""",
attrs = {
"srcs": attr.label_list(
Expand Down
Loading
Loading