rumk 0.0.5__tar.gz

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.
Files changed (56) hide show
  1. rumk-0.0.5/CHANGELOG.md +83 -0
  2. rumk-0.0.5/Cargo.lock +722 -0
  3. rumk-0.0.5/Cargo.toml +45 -0
  4. rumk-0.0.5/LICENSE +21 -0
  5. rumk-0.0.5/PKG-INFO +299 -0
  6. rumk-0.0.5/README.md +273 -0
  7. rumk-0.0.5/pyproject.toml +40 -0
  8. rumk-0.0.5/src/analysis.rs +713 -0
  9. rumk-0.0.5/src/config.rs +1104 -0
  10. rumk-0.0.5/src/diagnostic.rs +107 -0
  11. rumk-0.0.5/src/eval.rs +997 -0
  12. rumk-0.0.5/src/fix.rs +80 -0
  13. rumk-0.0.5/src/inline_config.rs +84 -0
  14. rumk-0.0.5/src/lib.rs +12 -0
  15. rumk-0.0.5/src/logical.rs +367 -0
  16. rumk-0.0.5/src/main.rs +1160 -0
  17. rumk-0.0.5/src/parser.rs +630 -0
  18. rumk-0.0.5/src/project.rs +713 -0
  19. rumk-0.0.5/src/project_analysis.rs +368 -0
  20. rumk-0.0.5/src/rules/best_practices.rs +867 -0
  21. rumk-0.0.5/src/rules/project.rs +549 -0
  22. rumk-0.0.5/src/rules/style.rs +204 -0
  23. rumk-0.0.5/src/rules/syntax.rs +223 -0
  24. rumk-0.0.5/src/rules.rs +113 -0
  25. rumk-0.0.5/src/syntax.rs +289 -0
  26. rumk-0.0.5/tests/analysis_test.rs +187 -0
  27. rumk-0.0.5/tests/cli_test.rs +602 -0
  28. rumk-0.0.5/tests/config_test.rs +314 -0
  29. rumk-0.0.5/tests/corpus_test.rs +59 -0
  30. rumk-0.0.5/tests/eval_test.rs +241 -0
  31. rumk-0.0.5/tests/fix_test.rs +26 -0
  32. rumk-0.0.5/tests/fixtures/corpus/c_library/Makefile +27 -0
  33. rumk-0.0.5/tests/fixtures/corpus/conditional/Makefile +13 -0
  34. rumk-0.0.5/tests/fixtures/corpus/conditional/mk/linux.mk +2 -0
  35. rumk-0.0.5/tests/fixtures/corpus/conditional/mk/windows.mk +2 -0
  36. rumk-0.0.5/tests/fixtures/corpus/go_service/Makefile +22 -0
  37. rumk-0.0.5/tests/fixtures/corpus/go_service/mk/tools.mk +5 -0
  38. rumk-0.0.5/tests/fixtures/corpus/monorepo/Makefile +13 -0
  39. rumk-0.0.5/tests/fixtures/corpus/monorepo/mk/backend.mk +11 -0
  40. rumk-0.0.5/tests/fixtures/corpus/monorepo/mk/frontend.mk +11 -0
  41. rumk-0.0.5/tests/fixtures/gnu_make/advanced.mk +33 -0
  42. rumk-0.0.5/tests/fixtures/gnu_make/evaluator/Makefile +29 -0
  43. rumk-0.0.5/tests/fixtures/gnu_make/evaluator/mk/one.mk +2 -0
  44. rumk-0.0.5/tests/fixtures/gnu_make/evaluator/mk/two.mk +2 -0
  45. rumk-0.0.5/tests/fixtures/gnu_make/project/Makefile +5 -0
  46. rumk-0.0.5/tests/fixtures/gnu_make/project/mk/nested.mk +1 -0
  47. rumk-0.0.5/tests/fixtures/gnu_make/project/mk/shared.mk +4 -0
  48. rumk-0.0.5/tests/gnu_make_test.rs +161 -0
  49. rumk-0.0.5/tests/inline_config_test.rs +45 -0
  50. rumk-0.0.5/tests/logical_test.rs +83 -0
  51. rumk-0.0.5/tests/parser_test.rs +248 -0
  52. rumk-0.0.5/tests/project_analysis_test.rs +185 -0
  53. rumk-0.0.5/tests/project_rules_test.rs +263 -0
  54. rumk-0.0.5/tests/project_test.rs +283 -0
  55. rumk-0.0.5/tests/rules_test.rs +404 -0
  56. rumk-0.0.5/tests/syntax_test.rs +151 -0
@@ -0,0 +1,83 @@
1
+ # Changelog
2
+
3
+ All notable changes to Rumk are documented in this file.
4
+
5
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and versions follow
6
+ [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.0.5] - 2026-08-30
11
+
12
+ ### Added
13
+
14
+ - `MK201.placement` controls where autofixes add missing `.PHONY` declarations:
15
+ `auto` preserves the established file style, `top` groups names in the
16
+ earliest declaration, and `adjacent` places declarations beside their rules.
17
+ - Complete reference pages for every rule, including examples, configuration,
18
+ autofix behavior, special cases, and the source of each convention.
19
+ - `rumk rule <RULE>` now shows category, default state, fixability, analysis
20
+ scope, rule-option defaults, and a documentation link.
21
+ - Native PyPI wheels for supported Linux, macOS, and Windows platforms.
22
+
23
+ ### Fixed
24
+
25
+ - `MK002` accepts GNU Make variable names containing valid punctuation or
26
+ internal whitespace and conservatively accepts computed variable names.
27
+ - Required includes no longer treat trailing Make comments as filenames.
28
+ - Space-indented conditional directives after a rule are no longer mistaken
29
+ for malformed recipes, preventing a project-analysis panic.
30
+
31
+ ## [0.0.4] - 2026-08-30
32
+
33
+ ### Changed
34
+
35
+ - `MK201` now emits one coordinated fix per source file, extends existing canonical `.PHONY`
36
+ groups, preserves established per-section declarations, wraps long groups safely, retains inline
37
+ comments and line endings, and avoids conditional declarations.
38
+
39
+ ## [0.0.3] - 2026-08-30
40
+
41
+ ### Changed
42
+
43
+ - `MK101` now ignores full-line comments and recipe bodies by default, with configuration switches
44
+ for projects that want strict line-length enforcement in those regions.
45
+ - `MK208` now focuses on graph-level Make references and excludes recipe and deferred-macro
46
+ parameters, avoiding false positives for normal command-line inputs.
47
+ - `MK209` now requires explicit `entry-targets`, because every Make target can otherwise be a
48
+ legitimate command-line entry point.
49
+
50
+ ## [0.0.2] - 2026-08-30
51
+
52
+ ### Added
53
+
54
+ - Rumdl-shaped `check`, `fmt`, `rule`, `config`, `init`, and `explain` commands.
55
+ - Lossless Makefile syntax and continuation-aware logical parsing.
56
+ - Cross-file semantic analysis for variables, targets, dependencies, includes, and references.
57
+ - Safe, side-effect-free partial GNU Make evaluation with provenance and three-valued conditions.
58
+ - Static expansion of includes, targets, prerequisites, substitution references, and common pure
59
+ Make functions.
60
+ - Project rules for separator conflicts, duplicate recipes, dependency and include cycles,
61
+ unresolved includes, undefined references, and unreachable targets.
62
+ - Rumdl-compatible configuration discovery, inheritance, inline suppressions, per-file ignores,
63
+ severities, output formats, and exit behavior.
64
+ - Controlled GNU Make parity fixtures and a production-style regression corpus.
65
+ - Conservative autofixes for missing `.PHONY` declarations and direct recursive Make invocations.
66
+
67
+ ### Changed
68
+
69
+ - Include graphs are evaluated in GNU Make statement order, including repeated include sites.
70
+ - Reachability uses GNU Make's inferred default goal when explicit entry targets are absent.
71
+ - Predefined variables behave like protected command-line assignments unless `override` is used.
72
+
73
+ ### Security
74
+
75
+ - Recipes, shell assignments, and side-effecting Make functions are never executed during linting.
76
+ - Release packages use an explicit source allowlist that excludes private planning documents.
77
+ - Release artifacts are checksummed and prepared for GitHub build-provenance attestations.
78
+
79
+ [Unreleased]: https://github.com/rvben/rumk/compare/v0.0.5...HEAD
80
+ [0.0.5]: https://github.com/rvben/rumk/compare/v0.0.4...v0.0.5
81
+ [0.0.4]: https://github.com/rvben/rumk/compare/v0.0.3...v0.0.4
82
+ [0.0.3]: https://github.com/rvben/rumk/compare/v0.0.2...v0.0.3
83
+ [0.0.2]: https://github.com/rvben/rumk/compare/v0.0.1...v0.0.2