git-aggregate-rs 0.0.4__tar.gz → 0.0.6__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 (109) hide show
  1. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/Cargo.lock +30 -24
  2. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/Cargo.toml +19 -18
  3. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/PKG-INFO +11 -3
  4. {git_aggregate_rs-0.0.4/crates/git-aggregate-rs → git_aggregate_rs-0.0.6}/README.md +5 -0
  5. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6/crates/git-aggregate-rs}/README.md +5 -0
  6. git_aggregate_rs-0.0.6/crates/odx-aggregate/README.md +19 -0
  7. git_aggregate_rs-0.0.6/crates/odx-config/README.md +19 -0
  8. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/deps.rs +155 -0
  9. git_aggregate_rs-0.0.6/crates/odx-config/src/environments.rs +634 -0
  10. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/lib.rs +1 -0
  11. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/load.rs +31 -9
  12. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/tests/schema.rs +15 -6
  13. git_aggregate_rs-0.0.6/crates/odx-core/README.md +19 -0
  14. git_aggregate_rs-0.0.6/crates/odx-forge/README.md +19 -0
  15. git_aggregate_rs-0.0.6/crates/odx-git/README.md +19 -0
  16. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/pyproject.toml +4 -1
  17. git_aggregate_rs-0.0.4/crates/odx-aggregate/README.md +0 -234
  18. git_aggregate_rs-0.0.4/crates/odx-config/README.md +0 -234
  19. git_aggregate_rs-0.0.4/crates/odx-core/README.md +0 -234
  20. git_aggregate_rs-0.0.4/crates/odx-forge/README.md +0 -234
  21. git_aggregate_rs-0.0.4/crates/odx-git/README.md +0 -234
  22. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/Cargo.toml +0 -0
  23. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/src/aggregate.rs +0 -0
  24. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/src/dirmatch.rs +0 -0
  25. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/src/lib.rs +0 -0
  26. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/src/main.rs +0 -0
  27. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/src/prs.rs +0 -0
  28. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/tests/aggregate.rs +0 -0
  29. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/tests/cli.rs +0 -0
  30. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/tests/prs.rs +0 -0
  31. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/git-aggregate-rs/tests/snapshots/cli__help_snapshot.snap +0 -0
  32. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-aggregate/Cargo.toml +0 -0
  33. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-aggregate/src/aggregation.rs +0 -0
  34. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-aggregate/src/guard.rs +0 -0
  35. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-aggregate/src/lib.rs +0 -0
  36. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-aggregate/src/locking.rs +0 -0
  37. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-aggregate/src/packages.rs +0 -0
  38. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-aggregate/src/pipeline.rs +0 -0
  39. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-aggregate/src/plan.rs +0 -0
  40. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-aggregate/src/repos_yaml.rs +0 -0
  41. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/Cargo.toml +0 -0
  42. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/compat/addons.rs +0 -0
  43. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/compat/env.rs +0 -0
  44. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/compat/export.rs +0 -0
  45. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/compat/import.rs +0 -0
  46. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/compat/mod.rs +0 -0
  47. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/compat/ordered.rs +0 -0
  48. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/compat/repos.rs +0 -0
  49. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/duration.rs +0 -0
  50. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/edit/doc.rs +0 -0
  51. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/edit/doc_tests.rs +0 -0
  52. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/edit/mod.rs +0 -0
  53. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/edit/spec.rs +0 -0
  54. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/error.rs +0 -0
  55. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/lock.rs +0 -0
  56. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/lock_tests.rs +0 -0
  57. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/mutes.rs +0 -0
  58. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/packages.rs +0 -0
  59. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/schema.rs +0 -0
  60. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/snapshots/odx_config__lock__tests__canonical_layout.snap +0 -0
  61. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/user.rs +0 -0
  62. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/src/uvlock.rs +0 -0
  63. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/tests/fixtures/full.toml +0 -0
  64. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/tests/fixtures/real/client-four-groups.toml +0 -0
  65. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/tests/fixtures/real/hatch-odoo.toml +0 -0
  66. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/tests/fixtures/real/oca-addon-whool.toml +0 -0
  67. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/tests/fixtures/real/oca-repo-root.toml +0 -0
  68. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/tests/fixtures/real/uvault.toml +0 -0
  69. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-config/tests/real_fixtures.rs +0 -0
  70. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/Cargo.toml +0 -0
  71. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/clock.rs +0 -0
  72. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/env.rs +0 -0
  73. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/exit.rs +0 -0
  74. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/fake.rs +0 -0
  75. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/fs.rs +0 -0
  76. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/lib.rs +0 -0
  77. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/process.rs +0 -0
  78. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/redact.rs +0 -0
  79. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/system.rs +0 -0
  80. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-core/src/url.rs +0 -0
  81. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/Cargo.toml +0 -0
  82. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/admin.rs +0 -0
  83. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/cache.rs +0 -0
  84. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/ci.rs +0 -0
  85. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/client.rs +0 -0
  86. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/contribute.rs +0 -0
  87. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/http.rs +0 -0
  88. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/lib.rs +0 -0
  89. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/listing.rs +0 -0
  90. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/pulls.rs +0 -0
  91. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/secrets.rs +0 -0
  92. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/testing.rs +0 -0
  93. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-forge/src/url.rs +0 -0
  94. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/Cargo.toml +0 -0
  95. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/backend.rs +0 -0
  96. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/cache.rs +0 -0
  97. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/clones.rs +0 -0
  98. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/fetch.rs +0 -0
  99. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/fetch_tests.rs +0 -0
  100. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/lib.rs +0 -0
  101. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/lock.rs +0 -0
  102. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/merge.rs +0 -0
  103. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/merge_tests.rs +0 -0
  104. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/refs.rs +0 -0
  105. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/run.rs +0 -0
  106. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/run_tests.rs +0 -0
  107. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/src/vault.rs +0 -0
  108. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/tests/daemon.rs +0 -0
  109. {git_aggregate_rs-0.0.4 → git_aggregate_rs-0.0.6}/crates/odx-git/tests/mergiraf.rs +0 -0
@@ -727,7 +727,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
727
727
  checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c"
728
728
  dependencies = [
729
729
  "lazy_static",
730
- "windows-sys 0.52.0",
730
+ "windows-sys 0.48.0",
731
731
  ]
732
732
 
733
733
  [[package]]
@@ -1541,7 +1541,7 @@ dependencies = [
1541
1541
 
1542
1542
  [[package]]
1543
1543
  name = "git-aggregate-rs"
1544
- version = "0.0.4"
1544
+ version = "0.0.6"
1545
1545
  dependencies = [
1546
1546
  "assert_cmd",
1547
1547
  "clap",
@@ -2658,7 +2658,7 @@ dependencies = [
2658
2658
 
2659
2659
  [[package]]
2660
2660
  name = "odx-aggregate"
2661
- version = "0.0.4"
2661
+ version = "0.0.6"
2662
2662
  dependencies = [
2663
2663
  "odx-config",
2664
2664
  "odx-core",
@@ -2671,7 +2671,7 @@ dependencies = [
2671
2671
 
2672
2672
  [[package]]
2673
2673
  name = "odx-analyze"
2674
- version = "0.0.4"
2674
+ version = "0.0.6"
2675
2675
  dependencies = [
2676
2676
  "serde",
2677
2677
  "tempfile",
@@ -2680,11 +2680,11 @@ dependencies = [
2680
2680
 
2681
2681
  [[package]]
2682
2682
  name = "odx-bot"
2683
- version = "0.0.4"
2683
+ version = "0.0.6"
2684
2684
 
2685
2685
  [[package]]
2686
2686
  name = "odx-cli"
2687
- version = "0.0.4"
2687
+ version = "0.0.6"
2688
2688
  dependencies = [
2689
2689
  "assert_cmd",
2690
2690
  "clap",
@@ -2697,6 +2697,7 @@ dependencies = [
2697
2697
  "odx-core",
2698
2698
  "odx-dashboard",
2699
2699
  "odx-dev",
2700
+ "odx-env",
2700
2701
  "odx-forge",
2701
2702
  "odx-git",
2702
2703
  "odx-index",
@@ -2717,7 +2718,7 @@ dependencies = [
2717
2718
 
2718
2719
  [[package]]
2719
2720
  name = "odx-config"
2720
- version = "0.0.4"
2721
+ version = "0.0.6"
2721
2722
  dependencies = [
2722
2723
  "insta",
2723
2724
  "odx-core",
@@ -2732,11 +2733,11 @@ dependencies = [
2732
2733
 
2733
2734
  [[package]]
2734
2735
  name = "odx-core"
2735
- version = "0.0.4"
2736
+ version = "0.0.6"
2736
2737
 
2737
2738
  [[package]]
2738
2739
  name = "odx-dashboard"
2739
- version = "0.0.4"
2740
+ version = "0.0.6"
2740
2741
  dependencies = [
2741
2742
  "ratatui",
2742
2743
  "serde",
@@ -2745,7 +2746,7 @@ dependencies = [
2745
2746
 
2746
2747
  [[package]]
2747
2748
  name = "odx-dev"
2748
- version = "0.0.4"
2749
+ version = "0.0.6"
2749
2750
  dependencies = [
2750
2751
  "odx-config",
2751
2752
  "serde",
@@ -2755,11 +2756,16 @@ dependencies = [
2755
2756
 
2756
2757
  [[package]]
2757
2758
  name = "odx-env"
2758
- version = "0.0.4"
2759
+ version = "0.0.6"
2760
+ dependencies = [
2761
+ "odx-config",
2762
+ "pep440_rs",
2763
+ "toml_edit 0.25.17+spec-1.1.0",
2764
+ ]
2759
2765
 
2760
2766
  [[package]]
2761
2767
  name = "odx-forge"
2762
- version = "0.0.4"
2768
+ version = "0.0.6"
2763
2769
  dependencies = [
2764
2770
  "apple-native-keyring-store",
2765
2771
  "keyring-core",
@@ -2775,7 +2781,7 @@ dependencies = [
2775
2781
 
2776
2782
  [[package]]
2777
2783
  name = "odx-git"
2778
- version = "0.0.4"
2784
+ version = "0.0.6"
2779
2785
  dependencies = [
2780
2786
  "futures-util",
2781
2787
  "odx-core",
@@ -2787,7 +2793,7 @@ dependencies = [
2787
2793
 
2788
2794
  [[package]]
2789
2795
  name = "odx-index"
2790
- version = "0.0.4"
2796
+ version = "0.0.6"
2791
2797
  dependencies = [
2792
2798
  "odx-analyze",
2793
2799
  "odx-core",
@@ -2800,7 +2806,7 @@ dependencies = [
2800
2806
 
2801
2807
  [[package]]
2802
2808
  name = "odx-lint"
2803
- version = "0.0.4"
2809
+ version = "0.0.6"
2804
2810
  dependencies = [
2805
2811
  "odoo-lint",
2806
2812
  "tempfile",
@@ -2808,7 +2814,7 @@ dependencies = [
2808
2814
 
2809
2815
  [[package]]
2810
2816
  name = "odx-platform"
2811
- version = "0.0.4"
2817
+ version = "0.0.6"
2812
2818
  dependencies = [
2813
2819
  "odx-analyze",
2814
2820
  "odx-config",
@@ -2823,7 +2829,7 @@ dependencies = [
2823
2829
 
2824
2830
  [[package]]
2825
2831
  name = "odx-port"
2826
- version = "0.0.4"
2832
+ version = "0.0.6"
2827
2833
  dependencies = [
2828
2834
  "odx-core",
2829
2835
  "regex",
@@ -2834,7 +2840,7 @@ dependencies = [
2834
2840
 
2835
2841
  [[package]]
2836
2842
  name = "odx-sync"
2837
- version = "0.0.4"
2843
+ version = "0.0.6"
2838
2844
  dependencies = [
2839
2845
  "serde",
2840
2846
  "serde_json",
@@ -2844,7 +2850,7 @@ dependencies = [
2844
2850
 
2845
2851
  [[package]]
2846
2852
  name = "odx-vendor"
2847
- version = "0.0.4"
2853
+ version = "0.0.6"
2848
2854
  dependencies = [
2849
2855
  "odx-analyze",
2850
2856
  "odx-config",
@@ -2861,7 +2867,7 @@ dependencies = [
2861
2867
 
2862
2868
  [[package]]
2863
2869
  name = "odx-verdicts"
2864
- version = "0.0.4"
2870
+ version = "0.0.6"
2865
2871
  dependencies = [
2866
2872
  "serde",
2867
2873
  "tempfile",
@@ -4026,9 +4032,9 @@ checksum = "eec689c0bc40ff2458a5977b6619cb718087084a18e02a131c599b62d05e1a5f"
4026
4032
 
4027
4033
  [[package]]
4028
4034
  name = "rustls-webpki"
4029
- version = "0.103.15"
4035
+ version = "0.103.16"
4030
4036
  source = "registry+https://github.com/rust-lang/crates.io-index"
4031
- checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"
4037
+ checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281"
4032
4038
  dependencies = [
4033
4039
  "ring",
4034
4040
  "rustls-pki-types",
@@ -5278,9 +5284,9 @@ dependencies = [
5278
5284
 
5279
5285
  [[package]]
5280
5286
  name = "webpki-root-certs"
5281
- version = "1.0.9"
5287
+ version = "1.0.10"
5282
5288
  source = "registry+https://github.com/rust-lang/crates.io-index"
5283
- checksum = "b96554aa2acc8ccdb7e1c9a58a7a68dd5d13bccc69cd124cb09406db612a1c9b"
5289
+ checksum = "58ec80e73fd8baf57bf0d9615554c75348bda990d6d5bbeab964dd068319fecb"
5284
5290
  dependencies = [
5285
5291
  "rustls-pki-types",
5286
5292
  ]
@@ -3,35 +3,36 @@ resolver = "3"
3
3
  members = ["crates/*"]
4
4
 
5
5
  [workspace.package]
6
- version = "0.0.4"
6
+ version = "0.0.6"
7
7
  edition = "2024"
8
8
  rust-version = "1.97"
9
9
  license = "MIT"
10
10
  authors = ["Strategic Efficiency B.V."]
11
11
  repository = "https://github.com/getfluvo/odx"
12
- homepage = "https://github.com/getfluvo/odx"
12
+ homepage = "https://odx.readthedocs.io"
13
13
  readme = "README.md"
14
14
  keywords = ["odoo", "oca", "git", "workspace", "cli"]
15
15
  categories = ["command-line-utilities", "development-tools"]
16
16
 
17
17
  [workspace.dependencies]
18
18
  # Internal crates.
19
- odx-core = { path = "crates/odx-core", version = "0.0.4" }
20
- git-aggregate-rs = { path = "crates/git-aggregate-rs", version = "0.0.4" }
21
- odx-config = { path = "crates/odx-config", version = "0.0.4" }
22
- odx-git = { path = "crates/odx-git", version = "0.0.4" }
23
- odx-aggregate = { path = "crates/odx-aggregate", version = "0.0.4" }
24
- odx-forge = { path = "crates/odx-forge", version = "0.0.4" }
25
- odx-analyze = { path = "crates/odx-analyze", version = "0.0.4" }
26
- odx-dashboard = { path = "crates/odx-dashboard", version = "0.0.4" }
27
- odx-index = { path = "crates/odx-index", version = "0.0.4" }
28
- odx-port = { path = "crates/odx-port", version = "0.0.4" }
29
- odx-lint = { path = "crates/odx-lint", version = "0.0.4" }
30
- odx-verdicts = { path = "crates/odx-verdicts", version = "0.0.4" }
31
- odx-platform = { path = "crates/odx-platform", version = "0.0.4" }
32
- odx-vendor = { path = "crates/odx-vendor", version = "0.0.4" }
33
- odx-dev = { path = "crates/odx-dev", version = "0.0.4" }
34
- odx-sync = { path = "crates/odx-sync", version = "0.0.4" }
19
+ odx-core = { path = "crates/odx-core", version = "0.0.6" }
20
+ git-aggregate-rs = { path = "crates/git-aggregate-rs", version = "0.0.6" }
21
+ odx-config = { path = "crates/odx-config", version = "0.0.6" }
22
+ odx-git = { path = "crates/odx-git", version = "0.0.6" }
23
+ odx-aggregate = { path = "crates/odx-aggregate", version = "0.0.6" }
24
+ odx-forge = { path = "crates/odx-forge", version = "0.0.6" }
25
+ odx-analyze = { path = "crates/odx-analyze", version = "0.0.6" }
26
+ odx-dashboard = { path = "crates/odx-dashboard", version = "0.0.6" }
27
+ odx-index = { path = "crates/odx-index", version = "0.0.6" }
28
+ odx-port = { path = "crates/odx-port", version = "0.0.6" }
29
+ odx-lint = { path = "crates/odx-lint", version = "0.0.6" }
30
+ odx-verdicts = { path = "crates/odx-verdicts", version = "0.0.6" }
31
+ odx-platform = { path = "crates/odx-platform", version = "0.0.6" }
32
+ odx-vendor = { path = "crates/odx-vendor", version = "0.0.6" }
33
+ odx-dev = { path = "crates/odx-dev", version = "0.0.6" }
34
+ odx-sync = { path = "crates/odx-sync", version = "0.0.6" }
35
+ odx-env = { path = "crates/odx-env", version = "0.0.6" }
35
36
 
36
37
  # External crates. Versions are pinned in Cargo.lock.
37
38
  clap = { version = "4.5", features = ["derive"] }
@@ -1,19 +1,22 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: git-aggregate-rs
3
- Version: 0.0.4
3
+ Version: 0.0.6
4
4
  Classifier: Development Status :: 2 - Pre-Alpha
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Programming Language :: Rust
7
7
  Classifier: Topic :: Software Development :: Version Control :: Git
8
8
  Summary: Drop-in replacement for git-aggregator's gitaggregate, written in Rust
9
9
  Keywords: odoo,oca,git,git-aggregator
10
- Home-Page: https://github.com/getfluvo/odx
10
+ Home-Page: https://odx.readthedocs.io
11
11
  Author: Strategic Efficiency B.V.
12
12
  License-Expression: MIT
13
13
  Requires-Python: >=3.10
14
14
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
15
- Project-URL: Homepage, https://github.com/getfluvo/odx
15
+ Project-URL: Changelog, https://github.com/getfluvo/odx/releases
16
+ Project-URL: Documentation, https://odx.readthedocs.io/compatibility.html
17
+ Project-URL: Homepage, https://odx.readthedocs.io/compatibility.html
16
18
  Project-URL: Issues, https://github.com/getfluvo/odx/issues
19
+ Project-URL: Source, https://github.com/getfluvo/odx/tree/main/crates/git-aggregate-rs
17
20
 
18
21
  # git-aggregate-rs
19
22
 
@@ -23,6 +26,11 @@ same flags (`-c`, `-p`, `-d`, `-e`, `--env-file`, `-f`, `-j`, `--log-level`,
23
26
  `--no-color`), with opt-in extensions: `--allow-shell`, `--rebase`, `--mergiraf`
24
27
  and `--json`.
25
28
 
29
+ ```console
30
+ $ uv tool install git-aggregate-rs # or: pipx install git-aggregate-rs
31
+ $ cargo install git-aggregate-rs
32
+ ```
33
+
26
34
  ```console
27
35
  $ git-aggregate-rs -c repos.yaml
28
36
  $ git-aggregate-rs -c repos.yaml -d '*/sale-*' -j 8
@@ -6,6 +6,11 @@ same flags (`-c`, `-p`, `-d`, `-e`, `--env-file`, `-f`, `-j`, `--log-level`,
6
6
  `--no-color`), with opt-in extensions: `--allow-shell`, `--rebase`, `--mergiraf`
7
7
  and `--json`.
8
8
 
9
+ ```console
10
+ $ uv tool install git-aggregate-rs # or: pipx install git-aggregate-rs
11
+ $ cargo install git-aggregate-rs
12
+ ```
13
+
9
14
  ```console
10
15
  $ git-aggregate-rs -c repos.yaml
11
16
  $ git-aggregate-rs -c repos.yaml -d '*/sale-*' -j 8
@@ -6,6 +6,11 @@ same flags (`-c`, `-p`, `-d`, `-e`, `--env-file`, `-f`, `-j`, `--log-level`,
6
6
  `--no-color`), with opt-in extensions: `--allow-shell`, `--rebase`, `--mergiraf`
7
7
  and `--json`.
8
8
 
9
+ ```console
10
+ $ uv tool install git-aggregate-rs # or: pipx install git-aggregate-rs
11
+ $ cargo install git-aggregate-rs
12
+ ```
13
+
9
14
  ```console
10
15
  $ git-aggregate-rs -c repos.yaml
11
16
  $ git-aggregate-rs -c repos.yaml -d '*/sale-*' -j 8
@@ -0,0 +1,19 @@
1
+ # odx-aggregate
2
+
3
+ Aggregation, locking, vaulting, the force-push guard rail, auto-update and verification for odx.
4
+
5
+ Part of [odx](https://github.com/getfluvo/odx), the Odoo Developer eXtension.
6
+ This crate is one of the building blocks of the `odx` command
7
+ ([`odx-cli`](https://crates.io/crates/odx-cli)); its API follows what odx needs
8
+ and is not stable. To use odx, install the command:
9
+
10
+ ```console
11
+ $ uv tool install odx-cli
12
+ $ cargo install odx-cli
13
+ ```
14
+
15
+ - User documentation: [odx.readthedocs.io](https://odx.readthedocs.io/)
16
+ - API documentation: [docs.rs/odx-aggregate](https://docs.rs/odx-aggregate)
17
+ - Source and issues: [github.com/getfluvo/odx](https://github.com/getfluvo/odx)
18
+
19
+ MIT licensed. Built with Rust & AI-accelerated engineering.
@@ -0,0 +1,19 @@
1
+ # odx-config
2
+
3
+ Configuration for odx: [tool.odx], dependency groups, uv sources, odx.lock, mutes and repos.yaml/addons.yaml compatibility.
4
+
5
+ Part of [odx](https://github.com/getfluvo/odx), the Odoo Developer eXtension.
6
+ This crate is one of the building blocks of the `odx` command
7
+ ([`odx-cli`](https://crates.io/crates/odx-cli)); its API follows what odx needs
8
+ and is not stable. To use odx, install the command:
9
+
10
+ ```console
11
+ $ uv tool install odx-cli
12
+ $ cargo install odx-cli
13
+ ```
14
+
15
+ - User documentation: [odx.readthedocs.io](https://odx.readthedocs.io/)
16
+ - API documentation: [docs.rs/odx-config](https://docs.rs/odx-config)
17
+ - Source and issues: [github.com/getfluvo/odx](https://github.com/getfluvo/odx)
18
+
19
+ MIT licensed. Built with Rust & AI-accelerated engineering.
@@ -408,6 +408,109 @@ pub fn all_requirements(doc: &DocumentMut) -> Vec<(Option<String>, Requirement)>
408
408
  found
409
409
  }
410
410
 
411
+ /// The requirement strings of `dist` as written, with their group (none
412
+ /// for `[project] dependencies`), in the order [`all_requirements`] uses.
413
+ pub fn written_requirements(doc: &DocumentMut, dist: &str) -> Vec<(Option<String>, String)> {
414
+ let wanted = normalize_name(dist);
415
+ let of = |item: &Item| -> Vec<String> {
416
+ item.as_array()
417
+ .into_iter()
418
+ .flat_map(|array| array.iter())
419
+ .filter_map(|value| value.as_str())
420
+ .filter(|text| {
421
+ parse_requirement(text).is_ok_and(|req| normalize_name(&req.name) == wanted)
422
+ })
423
+ .map(str::to_owned)
424
+ .collect()
425
+ };
426
+ let mut found: Vec<(Option<String>, String)> = get_path(doc, &["project", "dependencies"])
427
+ .map(of)
428
+ .unwrap_or_default()
429
+ .into_iter()
430
+ .map(|text| (None, text))
431
+ .collect();
432
+ for table in [
433
+ GroupTable::OptionalDependencies,
434
+ GroupTable::DependencyGroups,
435
+ ] {
436
+ let groups = get_path(doc, table.path()).and_then(Item::as_table_like);
437
+ for (name, item) in groups.iter().flat_map(|groups| groups.iter()) {
438
+ found.extend(
439
+ of(item)
440
+ .into_iter()
441
+ .map(|text| (Some(name.to_owned()), text)),
442
+ );
443
+ }
444
+ }
445
+ found
446
+ }
447
+
448
+ /// The requirement array of `group` (none: `[project] dependencies`).
449
+ fn group_array_mut<'a>(
450
+ doc: &'a mut DocumentMut,
451
+ group: Option<&str>,
452
+ ) -> Option<&'a mut toml_edit::Array> {
453
+ let path: Vec<&str> = match group {
454
+ None => vec!["project", "dependencies"],
455
+ Some(name) => {
456
+ let table = [
457
+ GroupTable::OptionalDependencies,
458
+ GroupTable::DependencyGroups,
459
+ ]
460
+ .into_iter()
461
+ .find(|table| {
462
+ get_path(doc, table.path())
463
+ .and_then(Item::as_table_like)
464
+ .is_some_and(|groups| groups.contains_key(name))
465
+ })?;
466
+ table.path().iter().copied().chain([name]).collect()
467
+ }
468
+ };
469
+ get_path_mut(doc, &path)?.as_array_mut()
470
+ }
471
+
472
+ /// Make `requirement` the one requirement of `dist` in `group` (none:
473
+ /// `[project] dependencies`): in place of the first one there, else
474
+ /// appended, keeping the list's layout.
475
+ ///
476
+ /// Returns `false` when the group does not exist.
477
+ pub fn set_requirement(
478
+ doc: &mut DocumentMut,
479
+ group: Option<&str>,
480
+ dist: &str,
481
+ requirement: &str,
482
+ ) -> bool {
483
+ let wanted = normalize_name(dist);
484
+ let Some(array) = group_array_mut(doc, group) else {
485
+ return false;
486
+ };
487
+ let ours = |value: &Value| {
488
+ value
489
+ .as_str()
490
+ .and_then(|text| parse_requirement(text).ok())
491
+ .is_some_and(|req| normalize_name(&req.name) == wanted)
492
+ };
493
+ let first = array.iter().position(&ours);
494
+ let neighbour = first.map_or_else(|| array.iter().last(), |first| array.get(first));
495
+ let mut value = Value::from(requirement);
496
+ value.decor_mut().clone_from(
497
+ &neighbour
498
+ .map(|item| item.decor().clone())
499
+ .unwrap_or_default(),
500
+ );
501
+ if let Some(first) = first {
502
+ array.replace_formatted(first, value);
503
+ let mut index = 0;
504
+ array.retain(|item| {
505
+ index += 1;
506
+ index - 1 == first || !ours(item)
507
+ });
508
+ } else {
509
+ array.push_formatted(value);
510
+ }
511
+ true
512
+ }
513
+
411
514
  /// Append a requirement string to group `name`, keeping the list's layout.
412
515
  ///
413
516
  /// Returns `false` when the group does not exist.
@@ -590,6 +693,58 @@ pub fn remove_uv_source(doc: &mut DocumentMut, dist: &str) -> bool {
590
693
  mod tests {
591
694
  use super::*;
592
695
 
696
+ #[test]
697
+ fn written_and_set_requirements() {
698
+ let mut doc: DocumentMut = "[project]\nname = \"p\"\ndependencies = [\"odoo-addon-a==1\", \"other\"]\n\n\
699
+ [project.optional-dependencies]\noca = [\n \"odoo-addon-b==1\",\n \"odoo_addon_b>=0\",\n]\n\n\
700
+ [dependency-groups]\ndev = []\n"
701
+ .parse()
702
+ .unwrap();
703
+ assert_eq!(
704
+ written_requirements(&doc, "odoo_addon_a"),
705
+ [(None, "odoo-addon-a==1".to_owned())]
706
+ );
707
+ assert_eq!(written_requirements(&doc, "odoo-addon-b").len(), 2);
708
+ assert!(set_requirement(
709
+ &mut doc,
710
+ Some("oca"),
711
+ "odoo-addon-b",
712
+ "odoo-addon-b==2"
713
+ ));
714
+ assert!(set_requirement(
715
+ &mut doc,
716
+ None,
717
+ "odoo-addon-a",
718
+ "odoo-addon-a==2"
719
+ ));
720
+ assert!(set_requirement(
721
+ &mut doc,
722
+ Some("dev"),
723
+ "odoo-addon-c",
724
+ "odoo-addon-c==1"
725
+ ));
726
+ assert!(set_requirement(
727
+ &mut doc,
728
+ Some("oca"),
729
+ "odoo-addon-d",
730
+ "odoo-addon-d==1"
731
+ ));
732
+ assert!(!set_requirement(
733
+ &mut doc,
734
+ Some("nope"),
735
+ "odoo-addon-d",
736
+ "x"
737
+ ));
738
+ assert_eq!(
739
+ doc.to_string(),
740
+ "[project]\nname = \"p\"\ndependencies = [\"odoo-addon-a==2\", \"other\"]\n\n\
741
+ [project.optional-dependencies]\noca = [\n \"odoo-addon-b==2\",\n \"odoo-addon-d==1\",\n]\n\n\
742
+ [dependency-groups]\ndev = [\"odoo-addon-c==1\"]\n"
743
+ );
744
+ let mut bare: DocumentMut = "[project]\nname = \"p\"\n".parse().unwrap();
745
+ assert!(!set_requirement(&mut bare, None, "a", "a"));
746
+ }
747
+
593
748
  #[test]
594
749
  fn every_requirement_with_its_group() {
595
750
  let doc: DocumentMut = "[project]\ndependencies = [\"odoo-addon-a\", 1]\n[project.optional-dependencies]\noca = [\"odoo-addon-b>=1\"]\nbad = 3\n[dependency-groups]\ndev = [\"pytest\"]\n"