nomono 1.0.4 → 1.0.6
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +48 -7
- data/CONTRIBUTING.md +2 -2
- data/FUNDING.md +1 -5
- data/README.md +67 -32
- data/lib/nomono/bundler.rb +1 -2
- data/lib/nomono/core.rb +22 -0
- data/lib/nomono/resolver.rb +1 -1
- data/lib/nomono/version.rb +38 -1
- data/lib/nomono.rb +1 -30
- data.tar.gz.sig +0 -0
- metadata +13 -32
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3b3d1b4a98dc51bea24e987866d3065d1a1f2ee5050828b66da8c83c103439ea
|
|
4
|
+
data.tar.gz: 71fe998dd40db72d01ceed74f7feafd0a72bb7ddead54e0cab71d0656e91c981
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d8af201b7224efcd26898b3c9acf1a93cd1f5a69b24639875ca93e15b645b35a5df20052636a57c74be79e4be62cea63727665daeb75e82d6d0711675d17a061
|
|
7
|
+
data.tar.gz: 6845ef45c51065af514c15803bce0173a41e5e5ba48840adde953b5435de8b6c0be58245a737f9447ff9fa6e81c176117a3562a79c471df3c2619633a4879e0d
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG.md
CHANGED
|
@@ -30,6 +30,43 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
30
30
|
|
|
31
31
|
### Security
|
|
32
32
|
|
|
33
|
+
## [1.0.6] - 2026-06-22
|
|
34
|
+
|
|
35
|
+
- TAG: [v1.0.6][1.0.6t]
|
|
36
|
+
- COVERAGE: 99.01% -- 100/101 lines in 6 files
|
|
37
|
+
- BRANCH COVERAGE: 96.67% -- 29/30 branches in 6 files
|
|
38
|
+
- 8.70% documented
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Removed the unnecessary `version_gem` runtime dependency from nomono itself,
|
|
43
|
+
allowing Gemfiles generated by `kettle-jem` to load `nomono/bundler` directly
|
|
44
|
+
while Bundler is still evaluating local sibling-gem overrides.
|
|
45
|
+
- Split the runtime and Bundler entry points so `require "nomono"` loads the
|
|
46
|
+
resolver API without mutating `Bundler::Dsl`, while `require "nomono/bundler"`
|
|
47
|
+
remains the explicit Gemfile integration hook.
|
|
48
|
+
|
|
49
|
+
## [1.0.5] - 2026-06-21
|
|
50
|
+
|
|
51
|
+
- TAG: [v1.0.5][1.0.5t]
|
|
52
|
+
- COVERAGE: 97.73% -- 86/88 lines in 5 files
|
|
53
|
+
- BRANCH COVERAGE: 100.00% -- 28/28 branches in 5 files
|
|
54
|
+
- 12.50% documented
|
|
55
|
+
|
|
56
|
+
### Added
|
|
57
|
+
|
|
58
|
+
- Added support for JRuby 10.1 and TruffleRuby 34.0.
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
- Retemplated project metadata and CI/development automation with `kettle-jem` v7.0.0.
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- Corrected OpenCollective funding metadata to use the `kettle-dev` collective.
|
|
67
|
+
- Updated the default local workspace root from `$HOME/src/kettle-rb` to
|
|
68
|
+
`$HOME/src/my`.
|
|
69
|
+
|
|
33
70
|
## [1.0.4] - 2026-06-14
|
|
34
71
|
|
|
35
72
|
- TAG: [v1.0.4][1.0.4t]
|
|
@@ -123,14 +160,18 @@ Please file a bug if you notice a violation of semantic versioning.
|
|
|
123
160
|
- TAG: [v1.0.0][1.0.0t]
|
|
124
161
|
- 12.50% documented
|
|
125
162
|
|
|
126
|
-
[Unreleased]: https://github.com/kettle-dev/nomono/compare/v1.0.
|
|
163
|
+
[Unreleased]: https://github.com/kettle-dev/nomono/compare/v1.0.6...HEAD
|
|
164
|
+
[1.0.6]: https://github.com/kettle-dev/nomono/compare/v1.0.5...v1.0.6
|
|
165
|
+
[1.0.6t]: https://github.com/kettle-dev/nomono/releases/tag/v1.0.6
|
|
166
|
+
[1.0.5]: https://github.com/kettle-dev/nomono/compare/v1.0.4...v1.0.5
|
|
167
|
+
[1.0.5t]: https://github.com/kettle-dev/nomono/releases/tag/v1.0.5
|
|
127
168
|
[1.0.4]: https://github.com/kettle-dev/nomono/compare/v1.0.3...v1.0.4
|
|
128
169
|
[1.0.4t]: https://github.com/kettle-dev/nomono/releases/tag/v1.0.4
|
|
129
170
|
[1.0.3]: https://github.com/kettle-dev/nomono/compare/v1.0.2...v1.0.3
|
|
130
171
|
[1.0.3t]: https://github.com/kettle-dev/nomono/releases/tag/v1.0.3
|
|
131
|
-
[1.0.2]: https://github.com/kettle-
|
|
132
|
-
[1.0.2t]: https://github.com/kettle-
|
|
133
|
-
[1.0.1]: https://github.com/kettle-
|
|
134
|
-
[1.0.1t]: https://github.com/kettle-
|
|
135
|
-
[1.0.0]: https://github.com/kettle-
|
|
136
|
-
[1.0.0t]: https://github.com/kettle-
|
|
172
|
+
[1.0.2]: https://github.com/kettle-dev/nomono/compare/v1.0.1...v1.0.2
|
|
173
|
+
[1.0.2t]: https://github.com/kettle-dev/nomono/releases/tag/v1.0.2
|
|
174
|
+
[1.0.1]: https://github.com/kettle-dev/nomono/compare/v1.0.0...v1.0.1
|
|
175
|
+
[1.0.1t]: https://github.com/kettle-dev/nomono/releases/tag/v1.0.1
|
|
176
|
+
[1.0.0]: https://github.com/kettle-dev/nomono/compare/3080fe8ceff657265445e8b4936aa2a90faa37f9...v1.0.0
|
|
177
|
+
[1.0.0t]: https://github.com/kettle-dev/nomono/tags/v1.0.0
|
data/CONTRIBUTING.md
CHANGED
|
@@ -109,14 +109,14 @@ Git diff driver setup
|
|
|
109
109
|
- Git hosting forges generally ignore external diff drivers, so pull request views may still show raw textual diffs even when local `git diff` uses semantic drivers.
|
|
110
110
|
|
|
111
111
|
```console
|
|
112
|
-
K_JEM_TEMPLATING=true
|
|
112
|
+
K_JEM_TEMPLATING=true kettle-jem install
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
Troubleshooting Git diffs
|
|
116
116
|
- Use `git diff --no-ext-diff` to compare against Git's built-in diff output.
|
|
117
117
|
- Use `git diff --no-textconv` when a textconv projection obscures the raw file bytes you need to inspect.
|
|
118
118
|
- If Git reports a missing `smorg-*` executable, rerun `bundle install` and the setup command above, then check `git config --local --get-regexp '^diff\.smorg-'`.
|
|
119
|
-
- To remove managed local entries, run `K_JEM_TEMPLATING=true
|
|
119
|
+
- To remove managed local entries, run `K_JEM_TEMPLATING=true kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
|
|
120
120
|
|
|
121
121
|
For a quick starting point, this repository’s `mise.toml` defines the shared defaults, and `.env.local` can override them locally. Copy `.env.local.example` to `.env.local`, use `KEY=value` lines, and either activate `mise` in your shell or run commands through `mise exec -C /path/to/project -- ...`.
|
|
122
122
|
|
data/FUNDING.md
CHANGED
|
@@ -6,7 +6,7 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such
|
|
|
6
6
|
|
|
7
7
|
[![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal]
|
|
8
8
|
|
|
9
|
-
[![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate
|
|
9
|
+
[![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
10
10
|
|
|
11
11
|
[⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
|
|
12
12
|
[⛳liberapay]: https://liberapay.com/pboling/donate
|
|
@@ -16,12 +16,8 @@ Many paths lead to being a sponsor or a backer of this project. Are you on such
|
|
|
16
16
|
[🖇osc-sponsors-i]: https://opencollective.com/kettle-dev/sponsors/badge.svg?style=flat
|
|
17
17
|
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
|
|
18
18
|
[🖇sponsor]: https://github.com/sponsors/pboling
|
|
19
|
-
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
|
|
20
|
-
[🖇polar]: https://polar.sh/pboling
|
|
21
19
|
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
|
|
22
20
|
[🖇kofi]: https://ko-fi.com/pboling
|
|
23
|
-
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
|
|
24
|
-
[🖇patreon]: https://patreon.com/galtzo
|
|
25
21
|
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
|
|
26
22
|
[🖇buyme]: https://www.buymeacoffee.com/pboling
|
|
27
23
|
[🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
|
data/README.md
CHANGED
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
|
|
11
11
|
`if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
|
|
12
12
|
|
|
13
|
-
[![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate
|
|
13
|
+
[![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
|
|
14
14
|
|
|
15
|
-
<details>
|
|
15
|
+
<details markdown="1">
|
|
16
16
|
<summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
|
|
17
17
|
|
|
18
18
|
I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
|
|
@@ -28,15 +28,17 @@ It provides two Gemfile macros:
|
|
|
28
28
|
- `nomono_gems(**opts)` returns `{ gem_name => absolute_path }`
|
|
29
29
|
- `eval_nomono_gems(**opts)` directly emits `gem "name", path: "..."`
|
|
30
30
|
|
|
31
|
-
The API mirrors existing `*_local.gemfile` patterns used in kettle-
|
|
31
|
+
The API mirrors existing `*_local.gemfile` patterns used in kettle-dev projects, but centralizes path/env logic in one reusable library.
|
|
32
|
+
Use `require "nomono"` for the runtime resolver API.
|
|
33
|
+
Use `require "nomono/bundler"` from Gemfiles or modular Gemfiles; this is the explicit hook that installs the Gemfile macros into `Bundler::Dsl`.
|
|
32
34
|
|
|
33
35
|
## 💡 Info you can shake a stick at
|
|
34
36
|
|
|
35
37
|
| Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
|
|
36
38
|
|-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|
37
|
-
| Works with JRuby | [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
|
|
38
|
-
| Works with Truffle Ruby | [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf]|
|
|
39
|
-
| Works with MRI Ruby 4 | [![Ruby
|
|
39
|
+
| Works with JRuby | [![JRuby 10.0 Compat][💎jruby-10.0i]][🚎jruby-10.0-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
|
|
40
|
+
| Works with Truffle Ruby | [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby 33.0 Compat][💎truby-33.0i]][🚎truby-33.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf] [![Truffle Ruby HEAD Compat][💎truby-headi]][🚎3-hd-wf]|
|
|
41
|
+
| Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
|
|
40
42
|
| Works with MRI Ruby 3 | [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
|
|
41
43
|
| Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼🏫expsup-upwork-img]][👨🏼🏫expsup-upwork] [![Get help from me on Codementor][👨🏼🏫expsup-codementor-img]][👨🏼🏫expsup-codementor] |
|
|
42
44
|
| Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on Github.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
|
|
@@ -54,9 +56,25 @@ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
|
|
|
54
56
|
may be higher than the gem's runtime compatibility floor when legacy Rubies are
|
|
55
57
|
not practical for the current toolchain.
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
<a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
|
|
60
|
+
|
|
61
|
+
The _amazing_ test matrix is powered by the kettle-dev stack.
|
|
62
|
+
|
|
63
|
+
<details markdown="1">
|
|
64
|
+
<summary>How kettle-dev manages complexity in tests</summary>
|
|
65
|
+
|
|
66
|
+
| Gem | Source | Role | Daily download rank |
|
|
67
|
+
|-----|--------|------|---------------------|
|
|
68
|
+
| [appraisal2](https://bestgems.org/gems/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [](https://bestgems.org/gems/appraisal2) |
|
|
69
|
+
| [appraisal2-rubocop](https://bestgems.org/gems/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [](https://bestgems.org/gems/appraisal2-rubocop) |
|
|
70
|
+
| [kettle-dev](https://bestgems.org/gems/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [](https://bestgems.org/gems/kettle-dev) |
|
|
71
|
+
| [kettle-jem](https://bestgems.org/gems/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [](https://bestgems.org/gems/kettle-jem) |
|
|
72
|
+
| [kettle-soup-cover](https://bestgems.org/gems/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [](https://bestgems.org/gems/kettle-soup-cover) |
|
|
73
|
+
| [kettle-test](https://bestgems.org/gems/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [](https://bestgems.org/gems/kettle-test) |
|
|
74
|
+
| [rubocop-lts](https://bestgems.org/gems/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [](https://bestgems.org/gems/rubocop-lts) |
|
|
75
|
+
| [turbo_tests2](https://bestgems.org/gems/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [](https://bestgems.org/gems/turbo_tests2) |
|
|
76
|
+
|
|
77
|
+
</details>
|
|
60
78
|
|
|
61
79
|
### Federated DVCS
|
|
62
80
|
|
|
@@ -117,7 +135,7 @@ Nomono has an *environment contract*. By default (`prefix: "NOMONO_GEMS"`):
|
|
|
117
135
|
|
|
118
136
|
- `NOMONO_GEMS_DEV` controls local-path mode — **tri-state**:
|
|
119
137
|
- `false` / `0` / `no` / `off` (or unset) — no local gems; released gems are used (CI default)
|
|
120
|
-
- `true` / `1` / `yes` / `on` — workspace root is `$HOME/src/kettle-
|
|
138
|
+
- `true` / `1` / `yes` / `on` — workspace root is `$HOME/src/kettle-dev`
|
|
121
139
|
- Any other value — treated as an explicit workspace root path (`/absolute/path` used as-is; relative path prepended with `$HOME`)
|
|
122
140
|
- `NOMONO_GEMS_VENDORED_GEMS` (or legacy `VENDORED_GEMS`) is a comma-delimited list of gem names resolved from a vendor directory. This is **independent** of `NOMONO_GEMS_DEV` — it applies when you have vendored copies of specific gems that should override both the workspace and released versions.
|
|
123
141
|
- `NOMONO_GEMS_VENDOR_GEM_DIR` (or legacy `VENDOR_GEM_DIR`) is the base path of the vendor directory used for gems listed in `NOMONO_GEMS_VENDORED_GEMS`. Defaults to `$workspace_root/vendor`. This is **not** an alternative form of the workspace root — it only affects vendored gems.
|
|
@@ -125,11 +143,11 @@ Nomono has an *environment contract*. By default (`prefix: "NOMONO_GEMS"`):
|
|
|
125
143
|
|
|
126
144
|
### Examples
|
|
127
145
|
|
|
128
|
-
For example, in the `kettle-
|
|
146
|
+
For example, in the `kettle-dev` family of gems, which nomono is a part of, the parameters used are `prefix: "KETTLE_RB"`, `path_env: "KETTLE_RB_DEV"`.
|
|
129
147
|
This means that the following is true:
|
|
130
148
|
|
|
131
149
|
- `KETTLE_RB_DEV=false` (or unset) — released gems from configured gem server (CI / single-gem development default)
|
|
132
|
-
- `KETTLE_RB_DEV=true` — local sibling gems from `$HOME/src/kettle-
|
|
150
|
+
- `KETTLE_RB_DEV=true` — local sibling gems from `$HOME/src/kettle-dev/<gem>` (recommended for full-workspace development)
|
|
133
151
|
- `KETTLE_RB_DEV=/custom/path` — local sibling gems from `/custom/path/<gem>` (non-standard workspace layout only)
|
|
134
152
|
|
|
135
153
|
You can override the env variable names via options. Here is an example for use with rubocop-lts gems:
|
|
@@ -147,25 +165,42 @@ nomono_gems(
|
|
|
147
165
|
|
|
148
166
|
## 🔧 Basic Usage
|
|
149
167
|
|
|
150
|
-
In
|
|
168
|
+
In a Gemfile or modular Gemfile, keep released dependencies on the normal
|
|
169
|
+
Bundler path when local sibling paths are disabled, and load a local override
|
|
170
|
+
when they are enabled:
|
|
151
171
|
|
|
152
172
|
```ruby
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
local_gems = %w[
|
|
156
|
-
kettle-dev
|
|
157
|
-
kettle-test
|
|
158
|
-
kettle-soup-cover
|
|
159
|
-
]
|
|
173
|
+
source "https://gem.coop"
|
|
160
174
|
|
|
161
175
|
if ENV.fetch("KETTLE_RB_DEV", "false").casecmp("false").zero?
|
|
162
|
-
|
|
163
|
-
gem "kettle-
|
|
176
|
+
gem "kettle-dev", "~> 2.2", ">= 2.2.15"
|
|
177
|
+
gem "kettle-test", "~> 2.0", ">= 2.0.6"
|
|
178
|
+
gem "kettle-soup-cover", "~> 3.0.a", ">= 3.0.0.rc4"
|
|
164
179
|
else
|
|
165
|
-
|
|
180
|
+
eval_gemfile "gemfiles/modular/local.gemfile"
|
|
166
181
|
end
|
|
167
182
|
```
|
|
168
183
|
|
|
184
|
+
Then in `gemfiles/modular/local.gemfile`:
|
|
185
|
+
|
|
186
|
+
```ruby
|
|
187
|
+
require "nomono/bundler"
|
|
188
|
+
|
|
189
|
+
eval_nomono_gems(
|
|
190
|
+
gems: %w[kettle-dev kettle-test kettle-soup-cover],
|
|
191
|
+
prefix: "KETTLE_RB",
|
|
192
|
+
path_env: "KETTLE_RB_DEV",
|
|
193
|
+
vendored_gems_env: "VENDORED_GEMS",
|
|
194
|
+
vendor_gem_dir_env: "VENDOR_GEM_DIR",
|
|
195
|
+
debug_env: "KETTLE_DEV_DEBUG"
|
|
196
|
+
)
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
This is the pattern generated by `kettle-jem`: the Gemfile remains readable,
|
|
200
|
+
and nomono owns the path normalization for sibling repositories. When
|
|
201
|
+
`KETTLE_RB_DEV=false` or is unset, the modular local override is skipped and
|
|
202
|
+
Bundler resolves released gems normally.
|
|
203
|
+
|
|
169
204
|
## 🔐 Security
|
|
170
205
|
|
|
171
206
|
See [SECURITY.md][🔐security].
|
|
@@ -210,7 +245,7 @@ Made with [contributors-img][🖐contrib-rocks].
|
|
|
210
245
|
|
|
211
246
|
Also see GitLab Contributors: [https://gitlab.com/kettle-dev/nomono/-/graphs/main][🚎contributors-gl]
|
|
212
247
|
|
|
213
|
-
<details>
|
|
248
|
+
<details markdown="1">
|
|
214
249
|
<summary>⭐️ Star History</summary>
|
|
215
250
|
|
|
216
251
|
<a href="https://star-history.com/kettle-dev/nomono&Date">
|
|
@@ -307,12 +342,8 @@ Thanks for RTFM. ☺️
|
|
|
307
342
|
[🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
|
|
308
343
|
[🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
|
|
309
344
|
[🖇sponsor]: https://github.com/sponsors/pboling
|
|
310
|
-
[🖇polar-img]: https://img.shields.io/badge/polar-donate-a51611.svg?style=flat
|
|
311
|
-
[🖇polar]: https://polar.sh/pboling
|
|
312
345
|
[🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
|
|
313
346
|
[🖇kofi]: https://ko-fi.com/pboling
|
|
314
|
-
[🖇patreon-img]: https://img.shields.io/badge/patreon-donate-a51611.svg?style=flat
|
|
315
|
-
[🖇patreon]: https://patreon.com/galtzo
|
|
316
347
|
[🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
|
|
317
348
|
[🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
|
|
318
349
|
[🖇buyme]: https://www.buymeacoffee.com/pboling
|
|
@@ -393,8 +424,10 @@ Thanks for RTFM. ☺️
|
|
|
393
424
|
[🚎ruby-3.2-wf]: https://github.com/kettle-dev/nomono/actions/workflows/ruby-3.2.yml
|
|
394
425
|
[🚎ruby-3.3-wf]: https://github.com/kettle-dev/nomono/actions/workflows/ruby-3.3.yml
|
|
395
426
|
[🚎ruby-3.4-wf]: https://github.com/kettle-dev/nomono/actions/workflows/ruby-3.4.yml
|
|
427
|
+
[🚎jruby-10.0-wf]: https://github.com/kettle-dev/nomono/actions/workflows/jruby-10.0.yml
|
|
396
428
|
[🚎truby-24.2-wf]: https://github.com/kettle-dev/nomono/actions/workflows/truffleruby-24.2.yml
|
|
397
429
|
[🚎truby-25.0-wf]: https://github.com/kettle-dev/nomono/actions/workflows/truffleruby-25.0.yml
|
|
430
|
+
[🚎truby-33.0-wf]: https://github.com/kettle-dev/nomono/actions/workflows/truffleruby-33.0.yml
|
|
398
431
|
[🚎2-cov-wf]: https://github.com/kettle-dev/nomono/actions/workflows/coverage.yml
|
|
399
432
|
[🚎2-cov-wfi]: https://github.com/kettle-dev/nomono/actions/workflows/coverage.yml/badge.svg
|
|
400
433
|
[🚎3-hd-wf]: https://github.com/kettle-dev/nomono/actions/workflows/heads.yml
|
|
@@ -416,12 +449,14 @@ Thanks for RTFM. ☺️
|
|
|
416
449
|
[💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
417
450
|
[💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
418
451
|
[💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
419
|
-
[💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
|
|
420
452
|
[💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
|
|
421
453
|
[💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
|
|
422
454
|
[💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
423
455
|
[💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
456
|
+
[💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
|
|
424
457
|
[💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
|
|
458
|
+
[💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
|
|
459
|
+
[💎jruby-10.0i]: https://img.shields.io/badge/JRuby-10.0-FBE742?style=for-the-badge&logo=ruby&logoColor=red
|
|
425
460
|
[💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
|
|
426
461
|
[💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
|
|
427
462
|
[🤝gh-issues]: https://github.com/kettle-dev/nomono/issues
|
|
@@ -450,7 +485,7 @@ Thanks for RTFM. ☺️
|
|
|
450
485
|
[📌gitmoji]: https://gitmoji.dev
|
|
451
486
|
[📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
|
|
452
487
|
[🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
|
|
453
|
-
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.
|
|
488
|
+
[🧮kloc-img]: https://img.shields.io/badge/KLOC-0.101-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
|
|
454
489
|
[🔐security]: https://github.com/kettle-dev/nomono/blob/main/SECURITY.md
|
|
455
490
|
[🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
|
|
456
491
|
[📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
|
|
@@ -478,7 +513,7 @@ Thanks for RTFM. ☺️
|
|
|
478
513
|
| Package | nomono |
|
|
479
514
|
| Description | 1️⃣ Provides nomono_gems and eval_nomono_gems to standardize local multi-repo dependency wiring in Gemfiles. |
|
|
480
515
|
| Homepage | https://github.com/kettle-dev/nomono |
|
|
481
|
-
| Source | https://github.com/kettle-dev/nomono
|
|
516
|
+
| Source | https://github.com/kettle-dev/nomono |
|
|
482
517
|
| License | `AGPL-3.0-only` |
|
|
483
|
-
| Funding | https://github.com/sponsors/pboling, https://
|
|
518
|
+
| Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/kettle-dev, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/nomono, https://www.buymeacoffee.com/pboling |
|
|
484
519
|
<!-- kettle-jem:metadata:end -->
|
data/lib/nomono/bundler.rb
CHANGED
data/lib/nomono/core.rb
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "resolver"
|
|
4
|
+
require_relative "dsl"
|
|
5
|
+
|
|
6
|
+
module Nomono
|
|
7
|
+
class Error < StandardError; end
|
|
8
|
+
|
|
9
|
+
module_function
|
|
10
|
+
|
|
11
|
+
def resolver
|
|
12
|
+
Resolver.new
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def install!(dsl_class = nil)
|
|
16
|
+
dsl_class ||= Bundler::Dsl if defined?(Bundler::Dsl)
|
|
17
|
+
return false unless dsl_class
|
|
18
|
+
|
|
19
|
+
dsl_class.include(GemfileDsl) unless dsl_class < GemfileDsl
|
|
20
|
+
true
|
|
21
|
+
end
|
|
22
|
+
end
|
data/lib/nomono/resolver.rb
CHANGED
|
@@ -12,7 +12,7 @@ module Nomono
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def gems(gems:, prefix: "NOMONO_GEMS", allowlist: gems, path_env: nil, vendored_gems_env: nil, vendor_gem_dir_env: nil,
|
|
15
|
-
debug_env: nil, root: ["src", "
|
|
15
|
+
debug_env: nil, root: ["src", "my"], strict: true)
|
|
16
16
|
requested = normalize_gems(gems)
|
|
17
17
|
allowed = normalize_gems(allowlist)
|
|
18
18
|
requested.each { |gem_name| validate_gem_name!(gem_name, allowed, strict: strict) }
|
data/lib/nomono/version.rb
CHANGED
|
@@ -2,7 +2,44 @@
|
|
|
2
2
|
|
|
3
3
|
module Nomono
|
|
4
4
|
module Version
|
|
5
|
-
VERSION = "1.0.
|
|
5
|
+
VERSION = "1.0.6"
|
|
6
|
+
|
|
7
|
+
module_function
|
|
8
|
+
|
|
9
|
+
def gem_version
|
|
10
|
+
Gem::Version.new(VERSION)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def major
|
|
14
|
+
gem_version.segments[0]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def minor
|
|
18
|
+
gem_version.segments[1]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def patch
|
|
22
|
+
gem_version.segments[2]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def pre
|
|
26
|
+
return nil unless gem_version.prerelease?
|
|
27
|
+
|
|
28
|
+
gem_version.segments[3..].join(".")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def to_h
|
|
32
|
+
{
|
|
33
|
+
major: major,
|
|
34
|
+
minor: minor,
|
|
35
|
+
patch: patch,
|
|
36
|
+
pre: pre
|
|
37
|
+
}
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def to_a
|
|
41
|
+
to_h.values
|
|
42
|
+
end
|
|
6
43
|
end
|
|
7
44
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
8
45
|
end
|
data/lib/nomono.rb
CHANGED
|
@@ -1,34 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
# External gems
|
|
4
|
-
require "version_gem"
|
|
5
|
-
|
|
6
3
|
# This gem
|
|
7
4
|
require_relative "nomono/version"
|
|
8
|
-
|
|
9
|
-
require_relative "nomono/resolver"
|
|
10
|
-
require_relative "nomono/dsl"
|
|
11
|
-
|
|
12
|
-
module Nomono
|
|
13
|
-
class Error < StandardError; end
|
|
14
|
-
|
|
15
|
-
module_function
|
|
16
|
-
|
|
17
|
-
def resolver
|
|
18
|
-
Resolver.new
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def install!(dsl_class = nil)
|
|
22
|
-
dsl_class ||= Bundler::Dsl if defined?(Bundler::Dsl)
|
|
23
|
-
return false unless dsl_class
|
|
24
|
-
|
|
25
|
-
dsl_class.include(GemfileDsl) unless dsl_class < GemfileDsl
|
|
26
|
-
true
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
Nomono.install!
|
|
31
|
-
|
|
32
|
-
Nomono::Version.class_eval do
|
|
33
|
-
extend VersionGem::Basic
|
|
34
|
-
end
|
|
5
|
+
require_relative "nomono/core"
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: nomono
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -37,26 +37,6 @@ cert_chain:
|
|
|
37
37
|
-----END CERTIFICATE-----
|
|
38
38
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
39
39
|
dependencies:
|
|
40
|
-
- !ruby/object:Gem::Dependency
|
|
41
|
-
name: version_gem
|
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '1.1'
|
|
47
|
-
- - ">="
|
|
48
|
-
- !ruby/object:Gem::Version
|
|
49
|
-
version: 1.1.11
|
|
50
|
-
type: :runtime
|
|
51
|
-
prerelease: false
|
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
53
|
-
requirements:
|
|
54
|
-
- - "~>"
|
|
55
|
-
- !ruby/object:Gem::Version
|
|
56
|
-
version: '1.1'
|
|
57
|
-
- - ">="
|
|
58
|
-
- !ruby/object:Gem::Version
|
|
59
|
-
version: 1.1.11
|
|
60
40
|
- !ruby/object:Gem::Dependency
|
|
61
41
|
name: kettle-dev
|
|
62
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -66,7 +46,7 @@ dependencies:
|
|
|
66
46
|
version: '2.2'
|
|
67
47
|
- - ">="
|
|
68
48
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: 2.2.
|
|
49
|
+
version: 2.2.15
|
|
70
50
|
type: :development
|
|
71
51
|
prerelease: false
|
|
72
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -76,7 +56,7 @@ dependencies:
|
|
|
76
56
|
version: '2.2'
|
|
77
57
|
- - ">="
|
|
78
58
|
- !ruby/object:Gem::Version
|
|
79
|
-
version: 2.2.
|
|
59
|
+
version: 2.2.15
|
|
80
60
|
- !ruby/object:Gem::Dependency
|
|
81
61
|
name: bundler-audit
|
|
82
62
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -154,7 +134,7 @@ dependencies:
|
|
|
154
134
|
version: '2.0'
|
|
155
135
|
- - ">="
|
|
156
136
|
- !ruby/object:Gem::Version
|
|
157
|
-
version: 2.0.
|
|
137
|
+
version: 2.0.6
|
|
158
138
|
type: :development
|
|
159
139
|
prerelease: false
|
|
160
140
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -164,7 +144,7 @@ dependencies:
|
|
|
164
144
|
version: '2.0'
|
|
165
145
|
- - ">="
|
|
166
146
|
- !ruby/object:Gem::Version
|
|
167
|
-
version: 2.0.
|
|
147
|
+
version: 2.0.6
|
|
168
148
|
- !ruby/object:Gem::Dependency
|
|
169
149
|
name: turbo_tests2
|
|
170
150
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -174,7 +154,7 @@ dependencies:
|
|
|
174
154
|
version: '3.1'
|
|
175
155
|
- - ">="
|
|
176
156
|
- !ruby/object:Gem::Version
|
|
177
|
-
version: 3.1.
|
|
157
|
+
version: 3.1.4
|
|
178
158
|
type: :development
|
|
179
159
|
prerelease: false
|
|
180
160
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -184,7 +164,7 @@ dependencies:
|
|
|
184
164
|
version: '3.1'
|
|
185
165
|
- - ">="
|
|
186
166
|
- !ruby/object:Gem::Version
|
|
187
|
-
version: 3.1.
|
|
167
|
+
version: 3.1.4
|
|
188
168
|
- !ruby/object:Gem::Dependency
|
|
189
169
|
name: ruby-progressbar
|
|
190
170
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -228,7 +208,7 @@ dependencies:
|
|
|
228
208
|
version: '2.0'
|
|
229
209
|
- - ">="
|
|
230
210
|
- !ruby/object:Gem::Version
|
|
231
|
-
version: 2.0.
|
|
211
|
+
version: 2.0.2
|
|
232
212
|
type: :development
|
|
233
213
|
prerelease: false
|
|
234
214
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -238,7 +218,7 @@ dependencies:
|
|
|
238
218
|
version: '2.0'
|
|
239
219
|
- - ">="
|
|
240
220
|
- !ruby/object:Gem::Version
|
|
241
|
-
version: 2.0.
|
|
221
|
+
version: 2.0.2
|
|
242
222
|
description: 1️⃣ Provides nomono_gems and eval_nomono_gems to standardize local multi-repo
|
|
243
223
|
dependency wiring in Gemfiles.
|
|
244
224
|
email:
|
|
@@ -268,6 +248,7 @@ files:
|
|
|
268
248
|
- certs/pboling.pem
|
|
269
249
|
- lib/nomono.rb
|
|
270
250
|
- lib/nomono/bundler.rb
|
|
251
|
+
- lib/nomono/core.rb
|
|
271
252
|
- lib/nomono/dsl.rb
|
|
272
253
|
- lib/nomono/resolver.rb
|
|
273
254
|
- lib/nomono/version.rb
|
|
@@ -278,10 +259,10 @@ licenses:
|
|
|
278
259
|
- AGPL-3.0-only
|
|
279
260
|
metadata:
|
|
280
261
|
homepage_uri: https://nomono.galtzo.com/
|
|
281
|
-
source_code_uri: https://github.com/kettle-dev/nomono/tree/v1.0.
|
|
282
|
-
changelog_uri: https://github.com/kettle-dev/nomono/blob/v1.0.
|
|
262
|
+
source_code_uri: https://github.com/kettle-dev/nomono/tree/v1.0.6
|
|
263
|
+
changelog_uri: https://github.com/kettle-dev/nomono/blob/v1.0.6/CHANGELOG.md
|
|
283
264
|
bug_tracker_uri: https://github.com/kettle-dev/nomono/issues
|
|
284
|
-
documentation_uri: https://www.rubydoc.info/gems/nomono/1.0.
|
|
265
|
+
documentation_uri: https://www.rubydoc.info/gems/nomono/1.0.6
|
|
285
266
|
funding_uri: https://github.com/sponsors/pboling
|
|
286
267
|
wiki_uri: https://github.com/kettle-dev/nomono/wiki
|
|
287
268
|
news_uri: https://www.railsbling.com/tags/nomono
|
metadata.gz.sig
CHANGED
|
Binary file
|