@oddessentials/repo-standards 1.2.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -1
- package/dist/config/standards.csharp-dotnet.azure-devops.json +74 -0
- package/dist/config/standards.csharp-dotnet.github-actions.json +74 -0
- package/dist/config/standards.csharp-dotnet.json +74 -0
- package/dist/config/standards.go.azure-devops.json +74 -0
- package/dist/config/standards.go.github-actions.json +74 -0
- package/dist/config/standards.go.json +74 -0
- package/dist/config/standards.json +228 -0
- package/dist/config/standards.python.azure-devops.json +76 -0
- package/dist/config/standards.python.github-actions.json +76 -0
- package/dist/config/standards.python.json +76 -0
- package/dist/config/standards.rust.azure-devops.json +74 -0
- package/dist/config/standards.rust.github-actions.json +74 -0
- package/dist/config/standards.rust.json +74 -0
- package/dist/config/standards.typescript-js.azure-devops.json +78 -0
- package/dist/config/standards.typescript-js.github-actions.json +78 -0
- package/dist/config/standards.typescript-js.json +78 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -35,6 +35,13 @@
|
|
|
35
35
|
"id": "linting",
|
|
36
36
|
"label": "Linting",
|
|
37
37
|
"stack": {
|
|
38
|
+
"bazelHints": {
|
|
39
|
+
"commands": [
|
|
40
|
+
"bazel test //...:ruff_test",
|
|
41
|
+
"bazel run //tools/lint:ruff -- check ."
|
|
42
|
+
],
|
|
43
|
+
"notes": "Use rules_python with ruff wrapped as py_test or a custom run target."
|
|
44
|
+
},
|
|
38
45
|
"exampleConfigFiles": [
|
|
39
46
|
"pyproject.toml",
|
|
40
47
|
".flake8"
|
|
@@ -67,6 +74,12 @@
|
|
|
67
74
|
"id": "unit-test-runner",
|
|
68
75
|
"label": "Unit Test Runner",
|
|
69
76
|
"stack": {
|
|
77
|
+
"bazelHints": {
|
|
78
|
+
"commands": [
|
|
79
|
+
"bazel test //..."
|
|
80
|
+
],
|
|
81
|
+
"notes": "Use rules_python py_test for pytest-based tests. Tests are hermetically isolated."
|
|
82
|
+
},
|
|
70
83
|
"exampleConfigFiles": [
|
|
71
84
|
"pytest.ini",
|
|
72
85
|
"pyproject.toml"
|
|
@@ -166,6 +179,12 @@
|
|
|
166
179
|
"id": "unit-test-reporter",
|
|
167
180
|
"label": "Unit Test Reporter / Coverage",
|
|
168
181
|
"stack": {
|
|
182
|
+
"bazelHints": {
|
|
183
|
+
"commands": [
|
|
184
|
+
"bazel coverage //..."
|
|
185
|
+
],
|
|
186
|
+
"notes": "Use rules_python py_test with coverage instrumentation. Combine with --combined_report=lcov."
|
|
187
|
+
},
|
|
169
188
|
"exampleConfigFiles": [
|
|
170
189
|
"pytest.ini",
|
|
171
190
|
"pyproject.toml"
|
|
@@ -189,6 +208,13 @@
|
|
|
189
208
|
"id": "ci-quality-gates",
|
|
190
209
|
"label": "CI Quality Gates",
|
|
191
210
|
"stack": {
|
|
211
|
+
"bazelHints": {
|
|
212
|
+
"commands": [
|
|
213
|
+
"bazel build //...",
|
|
214
|
+
"bazel test //..."
|
|
215
|
+
],
|
|
216
|
+
"notes": "Bazel py_binary and py_test targets replace traditional Python tooling."
|
|
217
|
+
},
|
|
192
218
|
"exampleConfigFiles": [
|
|
193
219
|
".github/workflows/*",
|
|
194
220
|
"azure-pipelines.yml"
|
|
@@ -208,6 +234,12 @@
|
|
|
208
234
|
"id": "code-formatter",
|
|
209
235
|
"label": "Code Formatter",
|
|
210
236
|
"stack": {
|
|
237
|
+
"bazelHints": {
|
|
238
|
+
"commands": [
|
|
239
|
+
"bazel run //tools/format:black -- --check ."
|
|
240
|
+
],
|
|
241
|
+
"notes": "Wrap black as a py_binary run target for format checking."
|
|
242
|
+
},
|
|
211
243
|
"exampleConfigFiles": [
|
|
212
244
|
"pyproject.toml"
|
|
213
245
|
],
|
|
@@ -248,6 +280,13 @@
|
|
|
248
280
|
"id": "type-checking",
|
|
249
281
|
"label": "Type Checking",
|
|
250
282
|
"stack": {
|
|
283
|
+
"bazelHints": {
|
|
284
|
+
"commands": [
|
|
285
|
+
"bazel test //...:mypy_test",
|
|
286
|
+
"bazel run //tools/typecheck:mypy"
|
|
287
|
+
],
|
|
288
|
+
"notes": "Wrap mypy as a py_test or run target for Bazel-based type checking."
|
|
289
|
+
},
|
|
251
290
|
"exampleConfigFiles": [
|
|
252
291
|
"mypy.ini",
|
|
253
292
|
"pyproject.toml"
|
|
@@ -546,6 +585,43 @@
|
|
|
546
585
|
"azure-devops"
|
|
547
586
|
],
|
|
548
587
|
"meta": {
|
|
588
|
+
"bazelIntegration": {
|
|
589
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
590
|
+
"ciContract": {
|
|
591
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
592
|
+
"deterministicFlags": [
|
|
593
|
+
"--nokeep_going",
|
|
594
|
+
"--test_output=errors"
|
|
595
|
+
],
|
|
596
|
+
"remoteCache": "Optional; not required for CI",
|
|
597
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
598
|
+
},
|
|
599
|
+
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
600
|
+
"detectionRules": {
|
|
601
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
602
|
+
"optionalMarkers": [
|
|
603
|
+
".bazelrc",
|
|
604
|
+
".bazelversion"
|
|
605
|
+
],
|
|
606
|
+
"rootMarkers": [
|
|
607
|
+
"MODULE.bazel",
|
|
608
|
+
"WORKSPACE.bazel",
|
|
609
|
+
"WORKSPACE"
|
|
610
|
+
]
|
|
611
|
+
},
|
|
612
|
+
"optOut": {
|
|
613
|
+
"configPath": "meta.bazelIntegration.enabled",
|
|
614
|
+
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
615
|
+
},
|
|
616
|
+
"targetConventions": {
|
|
617
|
+
"build": "bazel build //...",
|
|
618
|
+
"coverage": "bazel coverage //...",
|
|
619
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
620
|
+
"format": "bazel run //tools/format:check",
|
|
621
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
622
|
+
"test": "bazel test //..."
|
|
623
|
+
}
|
|
624
|
+
},
|
|
549
625
|
"complexityChecks": {
|
|
550
626
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
551
627
|
"enabledByDefault": true
|
|
@@ -35,6 +35,13 @@
|
|
|
35
35
|
"id": "linting",
|
|
36
36
|
"label": "Linting",
|
|
37
37
|
"stack": {
|
|
38
|
+
"bazelHints": {
|
|
39
|
+
"commands": [
|
|
40
|
+
"bazel test //...:ruff_test",
|
|
41
|
+
"bazel run //tools/lint:ruff -- check ."
|
|
42
|
+
],
|
|
43
|
+
"notes": "Use rules_python with ruff wrapped as py_test or a custom run target."
|
|
44
|
+
},
|
|
38
45
|
"exampleConfigFiles": [
|
|
39
46
|
"pyproject.toml",
|
|
40
47
|
".flake8"
|
|
@@ -67,6 +74,12 @@
|
|
|
67
74
|
"id": "unit-test-runner",
|
|
68
75
|
"label": "Unit Test Runner",
|
|
69
76
|
"stack": {
|
|
77
|
+
"bazelHints": {
|
|
78
|
+
"commands": [
|
|
79
|
+
"bazel test //..."
|
|
80
|
+
],
|
|
81
|
+
"notes": "Use rules_python py_test for pytest-based tests. Tests are hermetically isolated."
|
|
82
|
+
},
|
|
70
83
|
"exampleConfigFiles": [
|
|
71
84
|
"pytest.ini",
|
|
72
85
|
"pyproject.toml"
|
|
@@ -166,6 +179,12 @@
|
|
|
166
179
|
"id": "unit-test-reporter",
|
|
167
180
|
"label": "Unit Test Reporter / Coverage",
|
|
168
181
|
"stack": {
|
|
182
|
+
"bazelHints": {
|
|
183
|
+
"commands": [
|
|
184
|
+
"bazel coverage //..."
|
|
185
|
+
],
|
|
186
|
+
"notes": "Use rules_python py_test with coverage instrumentation. Combine with --combined_report=lcov."
|
|
187
|
+
},
|
|
169
188
|
"exampleConfigFiles": [
|
|
170
189
|
"pytest.ini",
|
|
171
190
|
"pyproject.toml"
|
|
@@ -189,6 +208,13 @@
|
|
|
189
208
|
"id": "ci-quality-gates",
|
|
190
209
|
"label": "CI Quality Gates",
|
|
191
210
|
"stack": {
|
|
211
|
+
"bazelHints": {
|
|
212
|
+
"commands": [
|
|
213
|
+
"bazel build //...",
|
|
214
|
+
"bazel test //..."
|
|
215
|
+
],
|
|
216
|
+
"notes": "Bazel py_binary and py_test targets replace traditional Python tooling."
|
|
217
|
+
},
|
|
192
218
|
"exampleConfigFiles": [
|
|
193
219
|
".github/workflows/*",
|
|
194
220
|
"azure-pipelines.yml"
|
|
@@ -208,6 +234,12 @@
|
|
|
208
234
|
"id": "code-formatter",
|
|
209
235
|
"label": "Code Formatter",
|
|
210
236
|
"stack": {
|
|
237
|
+
"bazelHints": {
|
|
238
|
+
"commands": [
|
|
239
|
+
"bazel run //tools/format:black -- --check ."
|
|
240
|
+
],
|
|
241
|
+
"notes": "Wrap black as a py_binary run target for format checking."
|
|
242
|
+
},
|
|
211
243
|
"exampleConfigFiles": [
|
|
212
244
|
"pyproject.toml"
|
|
213
245
|
],
|
|
@@ -248,6 +280,13 @@
|
|
|
248
280
|
"id": "type-checking",
|
|
249
281
|
"label": "Type Checking",
|
|
250
282
|
"stack": {
|
|
283
|
+
"bazelHints": {
|
|
284
|
+
"commands": [
|
|
285
|
+
"bazel test //...:mypy_test",
|
|
286
|
+
"bazel run //tools/typecheck:mypy"
|
|
287
|
+
],
|
|
288
|
+
"notes": "Wrap mypy as a py_test or run target for Bazel-based type checking."
|
|
289
|
+
},
|
|
251
290
|
"exampleConfigFiles": [
|
|
252
291
|
"mypy.ini",
|
|
253
292
|
"pyproject.toml"
|
|
@@ -546,6 +585,43 @@
|
|
|
546
585
|
"github-actions"
|
|
547
586
|
],
|
|
548
587
|
"meta": {
|
|
588
|
+
"bazelIntegration": {
|
|
589
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
590
|
+
"ciContract": {
|
|
591
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
592
|
+
"deterministicFlags": [
|
|
593
|
+
"--nokeep_going",
|
|
594
|
+
"--test_output=errors"
|
|
595
|
+
],
|
|
596
|
+
"remoteCache": "Optional; not required for CI",
|
|
597
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
598
|
+
},
|
|
599
|
+
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
600
|
+
"detectionRules": {
|
|
601
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
602
|
+
"optionalMarkers": [
|
|
603
|
+
".bazelrc",
|
|
604
|
+
".bazelversion"
|
|
605
|
+
],
|
|
606
|
+
"rootMarkers": [
|
|
607
|
+
"MODULE.bazel",
|
|
608
|
+
"WORKSPACE.bazel",
|
|
609
|
+
"WORKSPACE"
|
|
610
|
+
]
|
|
611
|
+
},
|
|
612
|
+
"optOut": {
|
|
613
|
+
"configPath": "meta.bazelIntegration.enabled",
|
|
614
|
+
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
615
|
+
},
|
|
616
|
+
"targetConventions": {
|
|
617
|
+
"build": "bazel build //...",
|
|
618
|
+
"coverage": "bazel coverage //...",
|
|
619
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
620
|
+
"format": "bazel run //tools/format:check",
|
|
621
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
622
|
+
"test": "bazel test //..."
|
|
623
|
+
}
|
|
624
|
+
},
|
|
549
625
|
"complexityChecks": {
|
|
550
626
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
551
627
|
"enabledByDefault": true
|
|
@@ -41,6 +41,13 @@
|
|
|
41
41
|
"id": "linting",
|
|
42
42
|
"label": "Linting",
|
|
43
43
|
"stack": {
|
|
44
|
+
"bazelHints": {
|
|
45
|
+
"commands": [
|
|
46
|
+
"bazel test //...:ruff_test",
|
|
47
|
+
"bazel run //tools/lint:ruff -- check ."
|
|
48
|
+
],
|
|
49
|
+
"notes": "Use rules_python with ruff wrapped as py_test or a custom run target."
|
|
50
|
+
},
|
|
44
51
|
"exampleConfigFiles": [
|
|
45
52
|
"pyproject.toml",
|
|
46
53
|
".flake8"
|
|
@@ -76,6 +83,12 @@
|
|
|
76
83
|
"id": "unit-test-runner",
|
|
77
84
|
"label": "Unit Test Runner",
|
|
78
85
|
"stack": {
|
|
86
|
+
"bazelHints": {
|
|
87
|
+
"commands": [
|
|
88
|
+
"bazel test //..."
|
|
89
|
+
],
|
|
90
|
+
"notes": "Use rules_python py_test for pytest-based tests. Tests are hermetically isolated."
|
|
91
|
+
},
|
|
79
92
|
"exampleConfigFiles": [
|
|
80
93
|
"pytest.ini",
|
|
81
94
|
"pyproject.toml"
|
|
@@ -187,6 +200,12 @@
|
|
|
187
200
|
"id": "unit-test-reporter",
|
|
188
201
|
"label": "Unit Test Reporter / Coverage",
|
|
189
202
|
"stack": {
|
|
203
|
+
"bazelHints": {
|
|
204
|
+
"commands": [
|
|
205
|
+
"bazel coverage //..."
|
|
206
|
+
],
|
|
207
|
+
"notes": "Use rules_python py_test with coverage instrumentation. Combine with --combined_report=lcov."
|
|
208
|
+
},
|
|
190
209
|
"exampleConfigFiles": [
|
|
191
210
|
"pytest.ini",
|
|
192
211
|
"pyproject.toml"
|
|
@@ -213,6 +232,13 @@
|
|
|
213
232
|
"id": "ci-quality-gates",
|
|
214
233
|
"label": "CI Quality Gates",
|
|
215
234
|
"stack": {
|
|
235
|
+
"bazelHints": {
|
|
236
|
+
"commands": [
|
|
237
|
+
"bazel build //...",
|
|
238
|
+
"bazel test //..."
|
|
239
|
+
],
|
|
240
|
+
"notes": "Bazel py_binary and py_test targets replace traditional Python tooling."
|
|
241
|
+
},
|
|
216
242
|
"exampleConfigFiles": [
|
|
217
243
|
".github/workflows/*",
|
|
218
244
|
"azure-pipelines.yml"
|
|
@@ -235,6 +261,12 @@
|
|
|
235
261
|
"id": "code-formatter",
|
|
236
262
|
"label": "Code Formatter",
|
|
237
263
|
"stack": {
|
|
264
|
+
"bazelHints": {
|
|
265
|
+
"commands": [
|
|
266
|
+
"bazel run //tools/format:black -- --check ."
|
|
267
|
+
],
|
|
268
|
+
"notes": "Wrap black as a py_binary run target for format checking."
|
|
269
|
+
},
|
|
238
270
|
"exampleConfigFiles": [
|
|
239
271
|
"pyproject.toml"
|
|
240
272
|
],
|
|
@@ -281,6 +313,13 @@
|
|
|
281
313
|
"id": "type-checking",
|
|
282
314
|
"label": "Type Checking",
|
|
283
315
|
"stack": {
|
|
316
|
+
"bazelHints": {
|
|
317
|
+
"commands": [
|
|
318
|
+
"bazel test //...:mypy_test",
|
|
319
|
+
"bazel run //tools/typecheck:mypy"
|
|
320
|
+
],
|
|
321
|
+
"notes": "Wrap mypy as a py_test or run target for Bazel-based type checking."
|
|
322
|
+
},
|
|
284
323
|
"exampleConfigFiles": [
|
|
285
324
|
"mypy.ini",
|
|
286
325
|
"pyproject.toml"
|
|
@@ -615,6 +654,43 @@
|
|
|
615
654
|
"github-actions"
|
|
616
655
|
],
|
|
617
656
|
"meta": {
|
|
657
|
+
"bazelIntegration": {
|
|
658
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
659
|
+
"ciContract": {
|
|
660
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
661
|
+
"deterministicFlags": [
|
|
662
|
+
"--nokeep_going",
|
|
663
|
+
"--test_output=errors"
|
|
664
|
+
],
|
|
665
|
+
"remoteCache": "Optional; not required for CI",
|
|
666
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
667
|
+
},
|
|
668
|
+
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
669
|
+
"detectionRules": {
|
|
670
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
671
|
+
"optionalMarkers": [
|
|
672
|
+
".bazelrc",
|
|
673
|
+
".bazelversion"
|
|
674
|
+
],
|
|
675
|
+
"rootMarkers": [
|
|
676
|
+
"MODULE.bazel",
|
|
677
|
+
"WORKSPACE.bazel",
|
|
678
|
+
"WORKSPACE"
|
|
679
|
+
]
|
|
680
|
+
},
|
|
681
|
+
"optOut": {
|
|
682
|
+
"configPath": "meta.bazelIntegration.enabled",
|
|
683
|
+
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
684
|
+
},
|
|
685
|
+
"targetConventions": {
|
|
686
|
+
"build": "bazel build //...",
|
|
687
|
+
"coverage": "bazel coverage //...",
|
|
688
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
689
|
+
"format": "bazel run //tools/format:check",
|
|
690
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
691
|
+
"test": "bazel test //..."
|
|
692
|
+
}
|
|
693
|
+
},
|
|
618
694
|
"complexityChecks": {
|
|
619
695
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
620
696
|
"enabledByDefault": true
|
|
@@ -35,6 +35,12 @@
|
|
|
35
35
|
"id": "linting",
|
|
36
36
|
"label": "Linting",
|
|
37
37
|
"stack": {
|
|
38
|
+
"bazelHints": {
|
|
39
|
+
"commands": [
|
|
40
|
+
"bazel build //... --aspects=@rules_rust//rust:defs.bzl%clippy_aspect --output_groups=clippy_checks"
|
|
41
|
+
],
|
|
42
|
+
"notes": "rules_rust includes clippy_aspect for Bazel-native Clippy linting on all Rust targets."
|
|
43
|
+
},
|
|
38
44
|
"exampleConfigFiles": [
|
|
39
45
|
"clippy.toml",
|
|
40
46
|
".clippy.toml"
|
|
@@ -64,6 +70,12 @@
|
|
|
64
70
|
"id": "unit-test-runner",
|
|
65
71
|
"label": "Unit Test Runner",
|
|
66
72
|
"stack": {
|
|
73
|
+
"bazelHints": {
|
|
74
|
+
"commands": [
|
|
75
|
+
"bazel test //..."
|
|
76
|
+
],
|
|
77
|
+
"notes": "rules_rust rust_test targets run cargo test under Bazel's hermetic environment."
|
|
78
|
+
},
|
|
67
79
|
"exampleConfigFiles": [
|
|
68
80
|
"Cargo.toml"
|
|
69
81
|
],
|
|
@@ -159,6 +171,12 @@
|
|
|
159
171
|
"id": "unit-test-reporter",
|
|
160
172
|
"label": "Unit Test Reporter / Coverage",
|
|
161
173
|
"stack": {
|
|
174
|
+
"bazelHints": {
|
|
175
|
+
"commands": [
|
|
176
|
+
"bazel coverage //..."
|
|
177
|
+
],
|
|
178
|
+
"notes": "Bazel coverage with rules_rust requires LLVM instrumentation. May need additional toolchain configuration."
|
|
179
|
+
},
|
|
162
180
|
"exampleConfigFiles": [
|
|
163
181
|
"Cargo.toml"
|
|
164
182
|
],
|
|
@@ -181,6 +199,13 @@
|
|
|
181
199
|
"id": "ci-quality-gates",
|
|
182
200
|
"label": "CI Quality Gates",
|
|
183
201
|
"stack": {
|
|
202
|
+
"bazelHints": {
|
|
203
|
+
"commands": [
|
|
204
|
+
"bazel build //...",
|
|
205
|
+
"bazel test //..."
|
|
206
|
+
],
|
|
207
|
+
"notes": "rules_rust provides rust_library, rust_test, and clippy_aspect for complete CI."
|
|
208
|
+
},
|
|
184
209
|
"exampleConfigFiles": [
|
|
185
210
|
".github/workflows/*",
|
|
186
211
|
"azure-pipelines.yml"
|
|
@@ -200,6 +225,12 @@
|
|
|
200
225
|
"id": "code-formatter",
|
|
201
226
|
"label": "Code Formatter",
|
|
202
227
|
"stack": {
|
|
228
|
+
"bazelHints": {
|
|
229
|
+
"commands": [
|
|
230
|
+
"bazel build //... --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect --output_groups=rustfmt_checks"
|
|
231
|
+
],
|
|
232
|
+
"notes": "rules_rust includes rustfmt_aspect for Bazel-native format checking."
|
|
233
|
+
},
|
|
203
234
|
"exampleConfigFiles": [
|
|
204
235
|
"rustfmt.toml",
|
|
205
236
|
".rustfmt.toml"
|
|
@@ -242,6 +273,12 @@
|
|
|
242
273
|
"id": "type-checking",
|
|
243
274
|
"label": "Type Checking",
|
|
244
275
|
"stack": {
|
|
276
|
+
"bazelHints": {
|
|
277
|
+
"commands": [
|
|
278
|
+
"bazel build //..."
|
|
279
|
+
],
|
|
280
|
+
"notes": "Rust type checking is inherent to compilation. bazel build with rules_rust enforces type safety."
|
|
281
|
+
},
|
|
245
282
|
"exampleConfigFiles": [
|
|
246
283
|
"Cargo.toml"
|
|
247
284
|
],
|
|
@@ -524,6 +561,43 @@
|
|
|
524
561
|
"azure-devops"
|
|
525
562
|
],
|
|
526
563
|
"meta": {
|
|
564
|
+
"bazelIntegration": {
|
|
565
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
566
|
+
"ciContract": {
|
|
567
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
568
|
+
"deterministicFlags": [
|
|
569
|
+
"--nokeep_going",
|
|
570
|
+
"--test_output=errors"
|
|
571
|
+
],
|
|
572
|
+
"remoteCache": "Optional; not required for CI",
|
|
573
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
574
|
+
},
|
|
575
|
+
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
576
|
+
"detectionRules": {
|
|
577
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
578
|
+
"optionalMarkers": [
|
|
579
|
+
".bazelrc",
|
|
580
|
+
".bazelversion"
|
|
581
|
+
],
|
|
582
|
+
"rootMarkers": [
|
|
583
|
+
"MODULE.bazel",
|
|
584
|
+
"WORKSPACE.bazel",
|
|
585
|
+
"WORKSPACE"
|
|
586
|
+
]
|
|
587
|
+
},
|
|
588
|
+
"optOut": {
|
|
589
|
+
"configPath": "meta.bazelIntegration.enabled",
|
|
590
|
+
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
591
|
+
},
|
|
592
|
+
"targetConventions": {
|
|
593
|
+
"build": "bazel build //...",
|
|
594
|
+
"coverage": "bazel coverage //...",
|
|
595
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
596
|
+
"format": "bazel run //tools/format:check",
|
|
597
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
598
|
+
"test": "bazel test //..."
|
|
599
|
+
}
|
|
600
|
+
},
|
|
527
601
|
"complexityChecks": {
|
|
528
602
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
529
603
|
"enabledByDefault": true
|
|
@@ -35,6 +35,12 @@
|
|
|
35
35
|
"id": "linting",
|
|
36
36
|
"label": "Linting",
|
|
37
37
|
"stack": {
|
|
38
|
+
"bazelHints": {
|
|
39
|
+
"commands": [
|
|
40
|
+
"bazel build //... --aspects=@rules_rust//rust:defs.bzl%clippy_aspect --output_groups=clippy_checks"
|
|
41
|
+
],
|
|
42
|
+
"notes": "rules_rust includes clippy_aspect for Bazel-native Clippy linting on all Rust targets."
|
|
43
|
+
},
|
|
38
44
|
"exampleConfigFiles": [
|
|
39
45
|
"clippy.toml",
|
|
40
46
|
".clippy.toml"
|
|
@@ -64,6 +70,12 @@
|
|
|
64
70
|
"id": "unit-test-runner",
|
|
65
71
|
"label": "Unit Test Runner",
|
|
66
72
|
"stack": {
|
|
73
|
+
"bazelHints": {
|
|
74
|
+
"commands": [
|
|
75
|
+
"bazel test //..."
|
|
76
|
+
],
|
|
77
|
+
"notes": "rules_rust rust_test targets run cargo test under Bazel's hermetic environment."
|
|
78
|
+
},
|
|
67
79
|
"exampleConfigFiles": [
|
|
68
80
|
"Cargo.toml"
|
|
69
81
|
],
|
|
@@ -159,6 +171,12 @@
|
|
|
159
171
|
"id": "unit-test-reporter",
|
|
160
172
|
"label": "Unit Test Reporter / Coverage",
|
|
161
173
|
"stack": {
|
|
174
|
+
"bazelHints": {
|
|
175
|
+
"commands": [
|
|
176
|
+
"bazel coverage //..."
|
|
177
|
+
],
|
|
178
|
+
"notes": "Bazel coverage with rules_rust requires LLVM instrumentation. May need additional toolchain configuration."
|
|
179
|
+
},
|
|
162
180
|
"exampleConfigFiles": [
|
|
163
181
|
"Cargo.toml"
|
|
164
182
|
],
|
|
@@ -181,6 +199,13 @@
|
|
|
181
199
|
"id": "ci-quality-gates",
|
|
182
200
|
"label": "CI Quality Gates",
|
|
183
201
|
"stack": {
|
|
202
|
+
"bazelHints": {
|
|
203
|
+
"commands": [
|
|
204
|
+
"bazel build //...",
|
|
205
|
+
"bazel test //..."
|
|
206
|
+
],
|
|
207
|
+
"notes": "rules_rust provides rust_library, rust_test, and clippy_aspect for complete CI."
|
|
208
|
+
},
|
|
184
209
|
"exampleConfigFiles": [
|
|
185
210
|
".github/workflows/*",
|
|
186
211
|
"azure-pipelines.yml"
|
|
@@ -200,6 +225,12 @@
|
|
|
200
225
|
"id": "code-formatter",
|
|
201
226
|
"label": "Code Formatter",
|
|
202
227
|
"stack": {
|
|
228
|
+
"bazelHints": {
|
|
229
|
+
"commands": [
|
|
230
|
+
"bazel build //... --aspects=@rules_rust//rust:defs.bzl%rustfmt_aspect --output_groups=rustfmt_checks"
|
|
231
|
+
],
|
|
232
|
+
"notes": "rules_rust includes rustfmt_aspect for Bazel-native format checking."
|
|
233
|
+
},
|
|
203
234
|
"exampleConfigFiles": [
|
|
204
235
|
"rustfmt.toml",
|
|
205
236
|
".rustfmt.toml"
|
|
@@ -242,6 +273,12 @@
|
|
|
242
273
|
"id": "type-checking",
|
|
243
274
|
"label": "Type Checking",
|
|
244
275
|
"stack": {
|
|
276
|
+
"bazelHints": {
|
|
277
|
+
"commands": [
|
|
278
|
+
"bazel build //..."
|
|
279
|
+
],
|
|
280
|
+
"notes": "Rust type checking is inherent to compilation. bazel build with rules_rust enforces type safety."
|
|
281
|
+
},
|
|
245
282
|
"exampleConfigFiles": [
|
|
246
283
|
"Cargo.toml"
|
|
247
284
|
],
|
|
@@ -524,6 +561,43 @@
|
|
|
524
561
|
"github-actions"
|
|
525
562
|
],
|
|
526
563
|
"meta": {
|
|
564
|
+
"bazelIntegration": {
|
|
565
|
+
"advisoryNotice": "bazelHints are suggestions, not required execution paths. Consumers should prefer stack-native commands unless explicitly adopting Bazel.",
|
|
566
|
+
"ciContract": {
|
|
567
|
+
"configFlag": "--config=ci (define in .bazelrc)",
|
|
568
|
+
"deterministicFlags": [
|
|
569
|
+
"--nokeep_going",
|
|
570
|
+
"--test_output=errors"
|
|
571
|
+
],
|
|
572
|
+
"remoteCache": "Optional; not required for CI",
|
|
573
|
+
"versionPinning": "Use .bazelversion file for Bazelisk"
|
|
574
|
+
},
|
|
575
|
+
"description": "Bazel build executor support for quality checks. All hints are ADVISORY—stack-native commands remain the default execution path.",
|
|
576
|
+
"detectionRules": {
|
|
577
|
+
"notes": "Detection uses repo-root markers only. Nested BUILD files do not trigger Bazel mode.",
|
|
578
|
+
"optionalMarkers": [
|
|
579
|
+
".bazelrc",
|
|
580
|
+
".bazelversion"
|
|
581
|
+
],
|
|
582
|
+
"rootMarkers": [
|
|
583
|
+
"MODULE.bazel",
|
|
584
|
+
"WORKSPACE.bazel",
|
|
585
|
+
"WORKSPACE"
|
|
586
|
+
]
|
|
587
|
+
},
|
|
588
|
+
"optOut": {
|
|
589
|
+
"configPath": "meta.bazelIntegration.enabled",
|
|
590
|
+
"description": "Set meta.bazelIntegration.enabled = false in repo config to disable Bazel hints"
|
|
591
|
+
},
|
|
592
|
+
"targetConventions": {
|
|
593
|
+
"build": "bazel build //...",
|
|
594
|
+
"coverage": "bazel coverage //...",
|
|
595
|
+
"description": "Recommended target naming (not assumed to exist). These are illustrative patterns; actual targets are repo-defined.",
|
|
596
|
+
"format": "bazel run //tools/format:check",
|
|
597
|
+
"lint": "//tools/lint:lint or bazel test //... with lint aspects",
|
|
598
|
+
"test": "bazel test //..."
|
|
599
|
+
}
|
|
600
|
+
},
|
|
527
601
|
"complexityChecks": {
|
|
528
602
|
"description": "When supported by the stack, run cyclomatic complexity or similar metrics in CI as a warning-only check initially.",
|
|
529
603
|
"enabledByDefault": true
|