nomono 1.0.0 → 1.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: da8d4110f1f010a120cac4c765a251a3bbac809d1e351a6f844f6abcb97841f4
4
- data.tar.gz: fa0b9aaabfc9c9320666d7f21d7459e0f3cd83c6ed1580b1deae52768adb7b57
3
+ metadata.gz: b47509ca8d4b41af4151a1c6c66fc15ccc1ccc44f008cd0b835ffccff5dc87d7
4
+ data.tar.gz: 8ff2ac529c4b2afc71d3b64102f0761993dcf557ca16d48da889bad5dd7e843c
5
5
  SHA512:
6
- metadata.gz: c66463051105a950955e62bcc05c6b4b1ba28d2981bfc618c31f5d5d387230610b84fb110c89b140911b45fcc427b9ff08b894087be307cabd925d1212821d85
7
- data.tar.gz: 8932654b9e864fdaca995d8f209b8ca6245ee4092bf58c541d0edf7a6a5129edd193fefd10b605f1dd53e8021bfebc019d38bf6e73f81baed0c43768be7adbe2
6
+ metadata.gz: 9bc1a6313013c6298336ad29e4331cf75e05371778d548a95fb28a9592b4efdb9068061e1bc3f7e2c0e1e2a67b7b44b26b3cca050e4872af6462e0988d8aabe2
7
+ data.tar.gz: 1ba432de7e7c5e052437ddf69701e7f5d74d6804480393f403015041433d405688fb01a7f7f2344b7b2752da464819b80a0a19f3c8a90a5b9f4168ca32d03aef
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,11 +30,67 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.0.2] - 2026-05-31
34
+
35
+ - TAG: [v1.0.2][1.0.2t]
36
+ - COVERAGE: 100.00% -- 86/86 lines in 4 files
37
+ - BRANCH COVERAGE: 100.00% -- 28/28 branches in 4 files
38
+ - 12.50% documented
39
+
40
+ ### Added
41
+
42
+ - Added StructuredMerge git diff driver configuration and the incident response
43
+ plan from the current kettle-jem template.
44
+
45
+ ### Changed
46
+
47
+ - Retemplated with the current kettle-jem template set, including the
48
+ `.structuredmerge/kettle-jem.yml` config migration, README logo and
49
+ templating attribution refresh, current modular Gemfile dependencies, and the
50
+ `kettle-dev` 2.0.6 development dependency floor.
51
+
52
+ ### Fixed
53
+
54
+ - Fixed generated documentation URLs that incorrectly pointed at a monorepo
55
+ `gems/nomono` path.
56
+ - Made the debug-output resolver spec tolerant of Ruby implementation
57
+ differences in `Hash#inspect` spacing.
58
+
59
+ ## [1.0.1] - 2026-05-27
60
+
61
+ - TAG: [v1.0.1][1.0.1t]
62
+ - COVERAGE: 100.00% -- 86/86 lines in 4 files
63
+ - BRANCH COVERAGE: 100.00% -- 28/28 branches in 4 files
64
+ - 12.50% documented
65
+
66
+ ### Added
67
+
68
+ - Improved documentation of ENV variables and overrides in README.md
69
+
70
+ ### Changed
71
+
72
+ - Retemplated with the current kettle-jem template set.
73
+
74
+ ### Fixed
75
+
76
+ - (dev) Updated the development dependency floor to `kettle-dev` 2.0.1 so the
77
+ templated `yard` rake task installs the expected yard-timekeeper cleanup.
78
+ - (dev) Routed `bin/yard` through `bin/rake yard` so direct documentation runs use the
79
+ same rake-installed documentation plugin hooks.
80
+ - (dev) Restored templated Rake task loading so `bin/rake` runs the expected
81
+ development task set instead of only the default stub.
82
+ - (dev) Restored full line and branch coverage for the public resolver and installer
83
+ behavior.
84
+
33
85
  ## [1.0.0] - 2026-03-26
34
86
 
35
87
  - TAG: [v1.0.0][1.0.0t]
36
88
  - 12.50% documented
37
89
 
38
- [Unreleased]: https://github.com/kettle-rb/nomono/compare/v1.0.0...HEAD
90
+ [Unreleased]: https://github.com/kettle-rb/nomono/compare/v1.0.2...HEAD
91
+ [1.0.2]: https://github.com/kettle-rb/nomono/compare/v1.0.1...v1.0.2
92
+ [1.0.2t]: https://github.com/kettle-rb/nomono/releases/tag/v1.0.2
93
+ [1.0.1]: https://github.com/kettle-rb/nomono/compare/v1.0.0...v1.0.1
94
+ [1.0.1t]: https://github.com/kettle-rb/nomono/releases/tag/v1.0.1
39
95
  [1.0.0]: https://github.com/kettle-rb/nomono/compare/3080fe8ceff657265445e8b4936aa2a90faa37f9...v1.0.0
40
96
  [1.0.0t]: https://github.com/kettle-rb/nomono/tags/v1.0.0
data/CITATION.cff CHANGED
@@ -7,7 +7,7 @@ type: software
7
7
  authors:
8
8
  - given-names: "Peter H."
9
9
  family-names: "Boling"
10
- email: "floss@glatzo.com"
10
+ email: "floss@galtzo.com"
11
11
  affiliation: "galtzo.com"
12
12
  orcid: 'https://orcid.org/0009-0008-8519-441X'
13
13
  identifiers:
data/CODE_OF_CONDUCT.md CHANGED
@@ -1,14 +1,3 @@
1
- # Code of Conduct
2
-
3
- "nomono" follows [The Ruby Community Conduct Guideline](https://www.ruby-lang.org/en/conduct) in all "collaborative space", which is defined as community communications channels (such as mailing lists, submitted patches, commit comments, etc.):
4
-
5
- * Participants will be tolerant of opposing views.
6
- * Participants must ensure that their language and actions are free of personal attacks and disparaging personal remarks.
7
- * When interpreting the words and actions of others, participants should always assume good intentions.
8
- * Behaviour which can be reasonably considered harassment will not be tolerated.
9
-
10
- If you have any concerns about behaviour within this project, please contact us at ["peter.boling@gmail.com"](mailto:"peter.boling@gmail.com").
11
-
12
1
  # Contributor Covenant Code of Conduct
13
2
 
14
3
  ## Our Pledge
@@ -19,6 +8,7 @@ size, visible or invisible disability, ethnicity, sex characteristics, gender
19
8
  identity and expression, level of experience, education, socio-economic status,
20
9
  nationality, personal appearance, race, caste, color, religion, or sexual
21
10
  identity and orientation.
11
+
22
12
  We pledge to act and interact in ways that contribute to an open, welcoming,
23
13
  diverse, inclusive, and healthy community.
24
14
 
@@ -142,14 +132,3 @@ For answers to common questions about this code of conduct, see the FAQ at
142
132
  [translations]: https://www.contributor-covenant.org/translations
143
133
  [🚂maint-contact]: http://www.railsbling.com/contact
144
134
  [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
145
-
146
- We as members, contributors, and leaders pledge to make participation in our
147
- community a harassment-free experience for everyone, regardless of age, body
148
- size, visible or invisible disability, ethnicity, sex characteristics, gender
149
- identity and expression, level of experience, education, socio-economic status,
150
- nationality, personal appearance, race, caste, color, religion, or sexual
151
- identity and orientation.
152
-
153
- We pledge to act and interact in ways that contribute to an open, welcoming,
154
- diverse, inclusive, and healthy community.
155
-
data/CONTRIBUTING.md CHANGED
@@ -8,19 +8,27 @@ To submit a patch, please fork the project, create a patch with tests, and send
8
8
 
9
9
  Remember to [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] if you make changes.
10
10
 
11
+ ## Developer Certificate of Origin
12
+
13
+ In order to protect users of this project, we require all contributors to comply with the
14
+ [Developer Certificate of Origin](https://developercertificate.org/).
15
+ This ensures that all contributions are properly licensed and attributed.
16
+
11
17
  ## Help out!
12
18
 
13
- Take a look at the `reek` list which is the file called `REEK` and find something to improve.
19
+ Take a look at the open issues and pull requests, or use the gem and find something to improve.
14
20
 
15
21
  Follow these instructions:
16
22
 
17
- 1. Fork the repository
18
- 2. Create a feature branch (`git checkout -b my-new-feature`)
19
- 3. Make some fixes.
20
- 4. Commit changes (`git commit -am 'Added some feature'`)
21
- 5. Push to the branch (`git push origin my-new-feature`)
22
- 6. Make sure to add tests for it. This is important, so it doesn't break in a future release.
23
- 7. Create new Pull Request.
23
+ 1. Join the Discord: [![Live Chat on Discord][✉️discord-invite-img]][✉️discord-invite]
24
+ 2. Fork the repository
25
+ 3. Create your feature branch (`git checkout -b my-new-feature`)
26
+ 4. Make some fixes.
27
+ 5. Commit your changes (`git commit -am 'Added some feature'`)
28
+ 6. Push to the branch (`git push origin my-new-feature`)
29
+ 7. Make sure to add tests for it. This is important, so it doesn't break in a future release.
30
+ 8. Create new Pull Request.
31
+ 9. Announce it in the channel for this org in the [Discord][✉️discord-invite]!
24
32
 
25
33
  ## Executables vs Rake tasks
26
34
 
@@ -42,6 +50,22 @@ There are many Rake tasks available as well. You can see them by running:
42
50
  bin/rake -T
43
51
  ```
44
52
 
53
+ ## Code quality checks
54
+
55
+ Run the Reek task when you want a smell check that fails on current findings:
56
+
57
+ ```shell
58
+ bin/rake reek
59
+ ```
60
+
61
+ Refresh the checked-in `REEK` backlog through the rake task, not by redirecting
62
+ the raw `reek` executable output. The rake task uses the project bundle and
63
+ avoids stale generated binstubs shadowing the Reek gem executable:
64
+
65
+ ```shell
66
+ bin/rake reek:update
67
+ ```
68
+
45
69
  ## Environment Variables for Local Development
46
70
 
47
71
  Below are the primary environment variables recognized by stone_checksums (and its integrated tools). Unless otherwise noted, set boolean values to the string "true" to enable.
@@ -78,11 +102,32 @@ Git hooks and commit message helpers (exe/kettle-commit-msg)
78
102
  - GIT_HOOK_FOOTER_SENTINEL: Required when footer append is enabled — a unique first-line sentinel to prevent duplicates
79
103
  - GIT_HOOK_FOOTER_APPEND_DEBUG: Extra debug output in the footer template (true/false)
80
104
 
105
+ Git diff driver setup
106
+ - Local setup writes repository `.gitattributes` entries so this checkout uses StructuredMerge semantic diffs.
107
+ - Global setup registers `diff.smorg-*` commands once in the user Git config; use it when you work across several StructuredMerge-enabled repositories.
108
+ - Include-file setup writes `.git/smorg/config` and includes it from local Git config, keeping command registrations out of the repository files.
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
+
111
+ ```console
112
+ K_JEM_TEMPLATING=true bundle exec kettle-jem install
113
+ ```
114
+
115
+ Troubleshooting Git diffs
116
+ - Use `git diff --no-ext-diff` to compare against Git's built-in diff output.
117
+ - Use `git diff --no-textconv` when a textconv projection obscures the raw file bytes you need to inspect.
118
+ - If Git reports a missing `smorg-*` executable, rerun `bundle install` and the setup command above, then check `git config --get-regexp '^diff\.smorg-'`.
119
+ - To remove managed local entries, run `K_JEM_TEMPLATING=true bundle exec kettle-jem install --undo`; remove global command registrations with `git config --global --unset-all diff.smorg-ruby.command`.
120
+
81
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 -- ...`.
82
122
 
83
123
  ## Appraisals
84
124
 
85
125
  From time to time the [appraisal2][🚎appraisal2] gemfiles in `gemfiles/` will need to be updated.
126
+ Generated appraisal and CI workflow floors are controlled by `ruby.test_minimum`
127
+ in `.structuredmerge/kettle-jem.yml`; this project was templated with `ruby.test_minimum: 3.2.0`.
128
+ That value describes the lowest Ruby version expected to run the test/development
129
+ toolchain, and it may be higher than the gemspec runtime floor.
130
+
86
131
  They are created and updated with the commands:
87
132
 
88
133
  ```console
@@ -97,22 +142,20 @@ bin/rake appraisal:reset
97
142
 
98
143
  When adding an appraisal to CI, check the [runner tool cache][🏃‍♂️runner-tool-cache] to see which runner to use.
99
144
 
100
- ## The Reek List
101
-
102
- Take a look at the `reek` list which is the file called `REEK` and find something to improve.
145
+ ## Run Tests
103
146
 
104
- To refresh the `reek` list:
147
+ Run tests via `kettle-test` (provided by `kettle-test`). It runs RSpec, writes the full log to
148
+ `tmp/kettle-test/rspec-TIMESTAMP.log`, and prints a compact highlight block with timing, seed,
149
+ pass/fail count, failing example list, and SimpleCov coverage percentages.
105
150
 
106
151
  ```console
107
- bundle exec reek > REEK
152
+ bundle exec kettle-test
108
153
  ```
109
154
 
110
- ## Run Tests
111
-
112
- To run all tests
155
+ For targeted runs, disable the hard coverage threshold to avoid false failures:
113
156
 
114
157
  ```console
115
- bundle exec rake test
158
+ K_SOUP_COV_MIN_HARD=false bundle exec kettle-test spec/path/to/spec.rb
116
159
  ```
117
160
 
118
161
  ### Spec organization (required)
@@ -183,33 +226,34 @@ NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in th
183
226
  1. Run `bin/setup && bin/rake` as a "test, coverage, & linting" sanity check
184
227
  2. Update the version number in `version.rb`, and ensure `CHANGELOG.md` reflects changes
185
228
  3. Run `bin/setup && bin/rake` again as a secondary check, and to update `Gemfile.lock`
186
- 4. Run `git commit -am "🔖 Prepare release v<VERSION>"` to commit the changes
187
- 5. Run `git push` to trigger the final CI pipeline before release, and merge PRs
229
+ 4. Run `bin/rake yard` to regenerate the docs site using the canonical docs task
230
+ 5. Run `git commit -am "🔖 Prepare release v<VERSION>"` to commit the changes
231
+ 6. Run `git push` to trigger the final CI pipeline before release, and merge PRs
188
232
  - NOTE: Remember to [check the build][🧪build].
189
- 6. Run `export GIT_TRUNK_BRANCH_NAME="$(git remote show origin | grep 'HEAD branch' | cut -d ' ' -f5)" && echo $GIT_TRUNK_BRANCH_NAME`
190
- 7. Run `git checkout $GIT_TRUNK_BRANCH_NAME`
191
- 8. Run `git pull origin $GIT_TRUNK_BRANCH_NAME` to ensure latest trunk code
192
- 9. Optional for older Bundler (< 2.7.0): Set `SOURCE_DATE_EPOCH` so `rake build` and `rake release` use the same timestamp and generate the same checksums
233
+ 7. Run `export GIT_TRUNK_BRANCH_NAME="$(git remote show origin | grep 'HEAD branch' | cut -d ' ' -f5)" && echo $GIT_TRUNK_BRANCH_NAME`
234
+ 8. Run `git checkout $GIT_TRUNK_BRANCH_NAME`
235
+ 9. Run `git pull origin $GIT_TRUNK_BRANCH_NAME` to ensure latest trunk code
236
+ 10. Optional for older Bundler (< 2.7.0): Set `SOURCE_DATE_EPOCH` so `rake build` and `rake release` use the same timestamp and generate the same checksums
193
237
  - If your Bundler is >= 2.7.0, you can skip this; builds are reproducible by default.
194
238
  - Run `export SOURCE_DATE_EPOCH=$EPOCHSECONDS && echo $SOURCE_DATE_EPOCH`
195
239
  - If the echo above has no output, then it didn't work.
196
240
  - Note: `zsh/datetime` module is needed, if running `zsh`.
197
241
  - In older versions of `bash` you can use `date +%s` instead, i.e. `export SOURCE_DATE_EPOCH=$(date +%s) && echo $SOURCE_DATE_EPOCH`
198
- 10. Run `bundle exec rake build`
199
- 11. Run `bin/gem_checksums` (more context [1][🔒️rubygems-checksums-pr], [2][🔒️rubygems-guides-pr])
242
+ 11. Run `bundle exec rake build`
243
+ 12. Run `bin/gem_checksums` (more context [1][🔒️rubygems-checksums-pr], [2][🔒️rubygems-guides-pr])
200
244
  to create SHA-256 and SHA-512 checksums. This functionality is provided by the `stone_checksums`
201
245
  [gem][💎stone_checksums].
202
246
  - The script automatically commits but does not push the checksums
203
- 12. Sanity check the SHA256, comparing with the output from the `bin/gem_checksums` command:
247
+ 13. Sanity check the SHA256, comparing with the output from the `bin/gem_checksums` command:
204
248
  - `sha256sum pkg/<gem name>-<version>.gem`
205
- 13. Run `bundle exec rake release` which will create a git tag for the version,
249
+ 14. Run `bundle exec rake release` which will create a git tag for the version,
206
250
  push git commits and tags, and push the `.gem` file to the gem host configured in the gemspec.
207
251
 
208
- [📜src-gl]: https://gitlab.com/kettle-rb/nomono/
252
+ [📜src-gl]: https://gitlab.com/kettle-rb/nomono
209
253
  [📜src-cb]: https://codeberg.org/kettle-rb/nomono
210
254
  [📜src-gh]: https://github.com/kettle-rb/nomono
211
255
  [🧪build]: https://github.com/kettle-rb/nomono/actions
212
- [🤝conduct]: https://gitlab.com/kettle-rb/nomono/-/blob/main/CODE_OF_CONDUCT.md
256
+ [🤝conduct]: https://github.com/kettle-rb/nomono/blob/main/CODE_OF_CONDUCT.md
213
257
  [🖐contrib-rocks]: https://contrib.rocks
214
258
  [🖐contributors]: https://github.com/kettle-rb/nomono/graphs/contributors
215
259
  [🚎contributors-gl]: https://gitlab.com/kettle-rb/nomono/-/graphs/main
@@ -225,3 +269,4 @@ NOTE: To build without signing the gem set `SKIP_GEM_SIGNING` to any value in th
225
269
  [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
226
270
  [🚎appraisal2]: https://github.com/appraisal-rb/appraisal2
227
271
  [🏃‍♂️runner-tool-cache]: https://github.com/ruby/ruby-builder/releases/tag/toolcache
272
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
data/LICENSE.md ADDED
@@ -0,0 +1,12 @@
1
+ # License
2
+
3
+ This project is made available under the following license.
4
+ Choose the option that best fits your use case:
5
+
6
+ - [AGPL-3.0-only](AGPL-3.0-only.md)
7
+
8
+ If none of the above licenses fit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
9
+
10
+ ## Copyright Notice
11
+
12
+ Copyright (c) 2026 Peter H. Boling
data/README.md CHANGED
@@ -1,17 +1,10 @@
1
- [![Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0][🖼️galtzo-i]][🖼️galtzo-discord] [![ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5][🖼️ruby-lang-i]][🖼️ruby-lang] [![kettle-rb Logo by Aboling0, CC BY-SA 4.0][🖼️kettle-rb-i]][🖼️kettle-rb]
1
+ <a href="https://github.com/kettle-rb"><img alt="kettle-rb Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-rb/avatar-128px.svg" width="14%" align="right"/></a>
2
2
 
3
- [🖼️galtzo-i]: https://logos.galtzo.com/assets/images/galtzo-floss/avatar-192px.svg
4
- [🖼️galtzo-discord]: https://discord.gg/3qme4XHNKN
5
- [🖼️ruby-lang-i]: https://logos.galtzo.com/assets/images/ruby-lang/avatar-192px.svg
6
- [🖼️ruby-lang]: https://www.ruby-lang.org/
7
- [🖼️kettle-rb-i]: https://logos.galtzo.com/assets/images/kettle-rb/avatar-192px.svg
8
- [🖼️kettle-rb]: https://github.com/kettle-rb
3
+ # 1️⃣ Nomono
9
4
 
10
- # 🍲 Nomono
5
+ [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: AGPL-3.0-only][📄license-img]][📄license] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf]
11
6
 
12
- [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license-ref] [![Downloads Rank][👽dl-ranki]][👽dl-rank] [![Open Source Helpers][👽oss-helpi]][👽oss-help] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![CodeQL][🖐codeQL-img]][🖐codeQL] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
13
-
14
- `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][🖼️galtzo-discord], as I may have missed the [discord notification][🖼️galtzo-discord].
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
15
8
 
16
9
  ---
17
10
 
@@ -20,13 +13,13 @@
20
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 on Polar][🖇polar-img]][🖇polar] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
21
14
 
22
15
  <details>
23
- <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
24
17
 
25
18
  I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
26
19
 
27
20
  </details>
28
21
 
29
- ## 🌻 Synopsis
22
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
30
23
 
31
24
  `nomono` standardizes local sibling-gem dependency loading for multi-repo setups.
32
25
 
@@ -39,39 +32,43 @@ The API mirrors existing `*_local.gemfile` patterns used in kettle-rb projects,
39
32
 
40
33
  ## 💡 Info you can shake a stick at
41
34
 
42
- | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
35
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
43
36
  |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
44
- | Works with JRuby | [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
45
- | Works with Truffle Ruby | [![Truffle Ruby 23.2 Compat][💎truby-23.2i]][🚎truby-23.2-wf] [![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]|
46
- | Works with MRI Ruby 4 | [![Ruby 4.0 Compat][💎ruby-4.0i]][🚎11-c-wf] [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
47
- | 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]|
48
- | 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] |
49
- | 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] |
50
- | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
51
- | Compliance | [![License: MIT][📄license-img]][📄license-ref] [![Compatible with Apache Software Projects: Verified by SkyWalking Eyes][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
52
- | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
53
- | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
54
- | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
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 4.0 Compat][💎ruby-4.0i]][🚎11-c-wf] [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
40
+ | 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
+ | 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
+ | 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] |
43
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
44
+ | Compliance | [![License: AGPL-3.0-only][📄license-img]][📄license] [![Apache license compatibility: Category X][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
45
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
46
+ | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
47
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
55
48
 
56
49
  ### Compatibility
57
50
 
58
51
  Compatible with MRI Ruby 3.2.0+, and concordant releases of JRuby, and TruffleRuby.
52
+ CI workflows and Appraisals are generated for MRI Ruby 3.2.0+.
53
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
54
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
55
+ not practical for the current toolchain.
59
56
 
60
- | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
57
+ | 🚚 _Amazing_ test matrix was brought to you by | 🔎 appraisal2 🔎 and the color 💚 green 💚 |
61
58
  |------------------------------------------------|--------------------------------------------------------|
62
- | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
59
+ | 👟 Check it out! | ✨ [github.com/appraisal-rb/appraisal2][💎appraisal2] ✨ |
63
60
 
64
61
  ### Federated DVCS
65
62
 
66
63
  <details markdown="1">
67
- <summary>Find this repo on federated forges (Coming soon!)</summary>
64
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
68
65
 
69
- | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
66
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
70
67
  |-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
71
- | 🧪 [kettle-rb/nomono on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
72
- | 🧊 [kettle-rb/nomono on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
73
- | 🐙 [kettle-rb/nomono on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
74
- | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
68
+ | 🧪 [kettle-rb/nomono on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
69
+ | 🧊 [kettle-rb/nomono on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
70
+ | 🐙 [kettle-rb/nomono on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
71
+ | 🎮️ [Discord Server][✉️discord-invite] | [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] | [Let's][✉️discord-invite] | [talk][✉️discord-invite] | [about][✉️discord-invite] | [this][✉️discord-invite] | [library!][✉️discord-invite] |
75
72
 
76
73
  </details>
77
74
 
@@ -82,7 +79,7 @@ Compatible with MRI Ruby 3.2.0+, and concordant releases of JRuby, and TruffleRu
82
79
  Available as part of the Tidelift Subscription.
83
80
 
84
81
  <details markdown="1">
85
- <summary>Need enterprise-level guarantees?</summary>
82
+ <summary>Need enterprise-level guarantees?</summary>
86
83
 
87
84
  The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
88
85
 
@@ -114,51 +111,28 @@ If bundler is not being used to manage dependencies, install the gem by executin
114
111
  gem install nomono
115
112
  ```
116
113
 
117
- ### 🔒 Secure Installation
118
-
119
- <details markdown="1">
120
- <summary>For Medium or High Security Installations</summary>
121
-
122
- This gem is cryptographically signed and has verifiable [SHA-256 and SHA-512][💎SHA_checksums] checksums by
123
- [stone_checksums][💎stone_checksums]. Be sure the gem you install hasn’t been tampered with
124
- by following the instructions below.
125
-
126
- Add my public key (if you haven’t already; key expires 2045-04-29) as a trusted certificate:
127
-
128
- ```console
129
- gem cert --add <(curl -Ls https://raw.github.com/galtzo-floss/certs/main/pboling.pem)
130
- ```
131
-
132
- You only need to do that once. Then proceed to install with:
133
-
134
- ```console
135
- gem install nomono -P HighSecurity
136
- ```
137
-
138
- The `HighSecurity` trust profile will verify signed gems, and not allow the installation of unsigned dependencies.
139
-
140
- If you want to up your security game full-time:
141
-
142
- ```console
143
- bundle config set --global trust-policy MediumSecurity
144
- ```
145
-
146
- `MediumSecurity` instead of `HighSecurity` is necessary if not all the gems you use are signed.
114
+ ## ⚙️ Configuration
147
115
 
148
- NOTE: Be prepared to track down certs for signed gems and add them the same way you added mine.
116
+ Nomono has an *environment contract*. By default (`prefix: "NOMONO_GEMS"`):
149
117
 
150
- </details>
118
+ - `NOMONO_GEMS_DEV` controls local-path mode — **tri-state**:
119
+ - `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-rb`
121
+ - Any other value — treated as an explicit workspace root path (`/absolute/path` used as-is; relative path prepended with `$HOME`)
122
+ - `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
+ - `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.
124
+ - `NOMONO_GEMS_DEBUG` enables debug output from nomono.
151
125
 
152
- ## ⚙️ Configuration
126
+ ### Examples
153
127
 
154
- Nomono has an *environment contract*. By default (`prefix: "NOMONO_GEMS"`):
128
+ For example, in the `kettle-rb` family of gems, which nomono is a part of, the parameters used are `prefix: "KETTLE_RB"`, `path_env: "KETTLE_RB_DEV"`.
129
+ This means that the following is true:
155
130
 
156
- - `NOMONO_GEMS_DEV` controls local mode (`false` disables; `true` uses `~/src/kettle-rb`; any other value is a path)
157
- - `NOMONO_GEMS_VENDORED_GEMS` (or legacy `VENDORED_GEMS`) is a comma-delimited list of gems resolved from vendor dir
158
- - `NOMONO_GEMS_VENDOR_GEM_DIR` (or legacy `VENDOR_GEM_DIR`) points at the vendor base path
159
- - `NOMONO_GEMS_DEBUG` enables debug output
131
+ - `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-rb/<gem>` (recommended for full-workspace development)
133
+ - `KETTLE_RB_DEV=/custom/path` local sibling gems from `/custom/path/<gem>` (non-standard workspace layout only)
160
134
 
161
- Override env variable names with options:
135
+ You can override the env variable names via options. Here is an example for use with rubocop-lts gems:
162
136
 
163
137
  ```ruby
164
138
  nomono_gems(
@@ -167,7 +141,7 @@ nomono_gems(
167
141
  path_env: "RUBOCOP_LTS_LOCAL",
168
142
  vendored_gems_env: "VENDORED_GEMS",
169
143
  vendor_gem_dir_env: "VENDOR_GEM_DIR",
170
- debug_env: "RUBOCOP_LTS_DEBUG",
144
+ debug_env: "RUBOCOP_LTS_DEBUG"
171
145
  )
172
146
  ```
173
147
 
@@ -192,63 +166,6 @@ else
192
166
  end
193
167
  ```
194
168
 
195
- ## 🦷 FLOSS Funding
196
-
197
- While kettle-rb tools are free software and will always be, the project would benefit immensely from some funding.
198
- Raising a monthly budget of... "dollars" would make the project more sustainable.
199
-
200
- We welcome both individual and corporate sponsors! We also offer a
201
- wide array of funding channels to account for your preferences
202
- (although currently [Open Collective][🖇osc] is our preferred funding platform).
203
-
204
- **If you're working in a company that's making significant use of kettle-rb tools we'd
205
- appreciate it if you suggest to your company to become a kettle-rb sponsor.**
206
-
207
- You can support the development of kettle-rb tools via
208
- [GitHub Sponsors][🖇sponsor],
209
- [Liberapay][⛳liberapay],
210
- [PayPal][🖇paypal],
211
- [Open Collective][🖇osc]
212
- and [Tidelift][🏙️entsup-tidelift].
213
-
214
- | 📍 NOTE |
215
- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
216
- | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
217
-
218
- ### Open Collective for Individuals
219
-
220
- Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/kettle-rb#backer)]
221
-
222
- NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
223
-
224
- <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
225
- No backers yet. Be the first!
226
- <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
227
-
228
- ### Open Collective for Organizations
229
-
230
- Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/kettle-rb#sponsor)]
231
-
232
- NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
233
-
234
- <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
235
- No sponsors yet. Be the first!
236
- <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
237
-
238
- [kettle-readme-backers]: https://github.com/kettle-rb/nomono/blob/main/exe/kettle-readme-backers
239
-
240
- ### Another way to support open-source
241
-
242
- I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
243
-
244
- If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
245
-
246
- I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look.
247
-
248
- **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
249
-
250
- [![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 on Polar][🖇polar-img]][🖇polar] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi] [![Donate to my FLOSS efforts using Patreon][🖇patreon-img]][🖇patreon]
251
-
252
169
  ## 🔐 Security
253
170
 
254
171
  See [SECURITY.md][🔐security].
@@ -256,7 +173,7 @@ See [SECURITY.md][🔐security].
256
173
  ## 🤝 Contributing
257
174
 
258
175
  If you need some ideas of where to help, you could work on adding more code coverage,
259
- or if it is already 💯 (see [below](#code-coverage)) check [reek](REEK), [issues][🤝gh-issues], or [PRs][🤝gh-pulls],
176
+ or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
260
177
  or use the gem and think about how it could be better.
261
178
 
262
179
  We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
@@ -269,12 +186,17 @@ See [CONTRIBUTING.md][🤝contributing].
269
186
 
270
187
  ### Code Coverage
271
188
 
189
+ <details markdown="1">
190
+ <summary>Coverage service badges</summary>
191
+
272
192
  [![Coverage Graph][🏀codecov-g]][🏀codecov]
273
193
 
274
194
  [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
275
195
 
276
196
  [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
277
197
 
198
+ </details>
199
+
278
200
  ### 🪇 Code of Conduct
279
201
 
280
202
  Everyone interacting with this project's codebases, issue trackers,
@@ -289,13 +211,13 @@ Made with [contributors-img][🖐contrib-rocks].
289
211
  Also see GitLab Contributors: [https://gitlab.com/kettle-rb/nomono/-/graphs/main][🚎contributors-gl]
290
212
 
291
213
  <details>
292
- <summary>⭐️ Star History</summary>
214
+ <summary>⭐️ Star History</summary>
293
215
 
294
- <a href="https://star-history.com/#kettle-rb/nomono&Date">
216
+ <a href="https://star-history.com/kettle-rb/nomono&Date">
295
217
  <picture>
296
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kettle-rb/nomono&type=Date&theme=dark" />
297
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kettle-rb/nomono&type=Date" />
298
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kettle-rb/nomono&type=Date" />
218
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=kettle-rb/nomono&type=Date&theme=dark" />
219
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=kettle-rb/nomono&type=Date" />
220
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=kettle-rb/nomono&type=Date" />
299
221
  </picture>
300
222
  </a>
301
223
 
@@ -303,19 +225,8 @@ Also see GitLab Contributors: [https://gitlab.com/kettle-rb/nomono/-/graphs/main
303
225
 
304
226
  ## 📌 Versioning
305
227
 
306
- This Library adheres to [![Semantic Versioning 2.0.0][📌semver-img]][📌semver].
307
- Violations of this scheme should be reported as bugs.
308
- Specifically, if a minor or patch version is released that breaks backward compatibility,
309
- a new version should be immediately released that restores compatibility.
310
- Breaking changes to the public API will only be introduced with new major versions.
311
-
312
- > dropping support for a platform is both obviously and objectively a breaking change <br/>
313
- >—Jordan Harband ([@ljharb](https://github.com/ljharb), maintainer of SemVer) [in SemVer issue 716][📌semver-breaking]
314
-
315
- I understand that policy doesn't work universally ("exceptions to every rule!"),
316
- but it is the policy here.
317
- As such, in many cases it is good to specify a dependency on this library using
318
- the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
228
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
229
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
319
230
 
320
231
  For example:
321
232
 
@@ -326,8 +237,8 @@ spec.add_dependency("nomono", "~> 1.0")
326
237
  <details markdown="1">
327
238
  <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
328
239
 
329
- SemVer should, IMO, but doesn't explicitly, say that dropping support for specific Platforms
330
- is a *breaking change* to an API, and for that reason the bike shedding is endless.
240
+ Dropping support for a platform can be a breaking change for affected users.
241
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
331
242
 
332
243
  To get a better understanding of how SemVer is intended to work over a project's lifetime,
333
244
  read this article from the creator of SemVer:
@@ -340,23 +251,21 @@ See [CHANGELOG.md][📌changelog] for a list of releases.
340
251
 
341
252
  ## 📄 License
342
253
 
343
- The gem is available as open source under the terms of
344
- the [MIT License][📄license] [![License: MIT][📄license-img]][📄license-ref].
345
- See [LICENSE.txt][📄license] for the official [Copyright Notice][📄copyright-notice-explainer].
254
+ The gem is available under the following license: [AGPL-3.0-only](AGPL-3.0-only.md).
255
+ See [LICENSE.md][📄license] for details.
256
+
257
+ If none of the available licenses suit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
346
258
 
347
259
  ### © Copyright
348
260
 
349
- <ul>
350
- <li>
351
- Copyright (c) 2026 Peter H. Boling, of
352
- <a href="https://discord.gg/3qme4XHNKN">
353
- Galtzo.com
354
- <picture>
355
- <img src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px-blank.svg" alt="Galtzo.com Logo (Wordless) by Aboling0, CC BY-SA 4.0" width="24">
356
- </picture>
357
- </a>, and nomono contributors.
358
- </li>
359
- </ul>
261
+ See [LICENSE.md][📄license] for the official copyright notice.
262
+
263
+ <details markdown="1">
264
+ <summary>Copyright holders</summary>
265
+
266
+ - Copyright (c) 2026 Peter H. Boling
267
+
268
+ </details>
360
269
 
361
270
  ## 🤑 A request for help
362
271
 
@@ -377,6 +286,8 @@ To say "thanks!" ☝️ Join the Discord or 👇️ send money.
377
286
 
378
287
  ### Please give the project a star ⭐ ♥.
379
288
 
289
+ Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
290
+
380
291
  Thanks for RTFM. ☺️
381
292
 
382
293
  [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
@@ -421,7 +332,7 @@ Thanks for RTFM. ☺️
421
332
  [⛳️gem-name]: https://bestgems.org/gems/nomono
422
333
  [⛳️name-img]: https://img.shields.io/badge/name-nomono-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
423
334
  [⛳️tag-img]: https://img.shields.io/github/tag/kettle-rb/nomono.svg
424
- [⛳️tag]: http://github.com/kettle-rb/nomono/releases
335
+ [⛳️tag]: https://github.com/kettle-rb/nomono/releases
425
336
  [🚂maint-blog]: http://www.railsbling.com/tags/nomono
426
337
  [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
427
338
  [🚂maint-contact]: http://www.railsbling.com/contact
@@ -456,7 +367,7 @@ Thanks for RTFM. ☺️
456
367
  [💁🏼‍♂️peterboling]: http://www.peterboling.com
457
368
  [🚂railsbling]: http://www.railsbling.com
458
369
  [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
459
- [📜src-gl]: https://gitlab.com/kettle-rb/nomono/
370
+ [📜src-gl]: https://gitlab.com/kettle-rb/nomono
460
371
  [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
461
372
  [📜src-cb]: https://codeberg.org/kettle-rb/nomono
462
373
  [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
@@ -465,12 +376,10 @@ Thanks for RTFM. ☺️
465
376
  [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
466
377
  [📜gl-wiki]: https://gitlab.com/kettle-rb/nomono/-/wikis/home
467
378
  [📜gh-wiki]: https://github.com/kettle-rb/nomono/wiki
468
- [📜gl-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
469
- [📜gh-wiki-img]: https://img.shields.io/badge/wiki-examples-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
379
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
380
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
470
381
  [👽dl-rank]: https://bestgems.org/gems/nomono
471
382
  [👽dl-ranki]: https://img.shields.io/gem/rd/nomono.svg
472
- [👽oss-help]: https://www.codetriage.com/kettle-rb/nomono
473
- [👽oss-helpi]: https://www.codetriage.com/kettle-rb/nomono/badges/users.svg
474
383
  [👽version]: https://bestgems.org/gems/nomono
475
384
  [👽versioni]: https://img.shields.io/gem/v/nomono.svg
476
385
  [🏀qlty-mnt]: https://qlty.sh/gh/kettle-rb/projects/nomono
@@ -481,12 +390,9 @@ Thanks for RTFM. ☺️
481
390
  [🏀codecovi]: https://codecov.io/gh/kettle-rb/nomono/graph/badge.svg
482
391
  [🏀coveralls]: https://coveralls.io/github/kettle-rb/nomono?branch=main
483
392
  [🏀coveralls-img]: https://coveralls.io/repos/github/kettle-rb/nomono/badge.svg?branch=main
484
- [🖐codeQL]: https://github.com/kettle-rb/nomono/security/code-scanning
485
- [🖐codeQL-img]: https://github.com/kettle-rb/nomono/actions/workflows/codeql-analysis.yml/badge.svg
486
393
  [🚎ruby-3.2-wf]: https://github.com/kettle-rb/nomono/actions/workflows/ruby-3.2.yml
487
394
  [🚎ruby-3.3-wf]: https://github.com/kettle-rb/nomono/actions/workflows/ruby-3.3.yml
488
395
  [🚎ruby-3.4-wf]: https://github.com/kettle-rb/nomono/actions/workflows/ruby-3.4.yml
489
- [🚎truby-23.2-wf]: https://github.com/kettle-rb/nomono/actions/workflows/truffleruby-23.2.yml
490
396
  [🚎truby-24.2-wf]: https://github.com/kettle-rb/nomono/actions/workflows/truffleruby-24.2.yml
491
397
  [🚎truby-25.0-wf]: https://github.com/kettle-rb/nomono/actions/workflows/truffleruby-25.0.yml
492
398
  [🚎2-cov-wf]: https://github.com/kettle-rb/nomono/actions/workflows/coverage.yml
@@ -507,15 +413,12 @@ Thanks for RTFM. ☺️
507
413
  [🚎13-🔒️-wfi]: https://github.com/kettle-rb/nomono/actions/workflows/locked_deps.yml/badge.svg
508
414
  [🚎14-🔓️-wf]: https://github.com/kettle-rb/nomono/actions/workflows/unlocked_deps.yml
509
415
  [🚎14-🔓️-wfi]: https://github.com/kettle-rb/nomono/actions/workflows/unlocked_deps.yml/badge.svg
510
- [🚎15-🪪-wf]: https://github.com/kettle-rb/nomono/actions/workflows/license-eye.yml
511
- [🚎15-🪪-wfi]: https://github.com/kettle-rb/nomono/actions/workflows/license-eye.yml/badge.svg
512
416
  [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
513
417
  [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
514
418
  [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
515
419
  [💎ruby-4.0i]: https://img.shields.io/badge/Ruby-4.0-CC342D?style=for-the-badge&logo=ruby&logoColor=white
516
420
  [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
517
421
  [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
518
- [💎truby-23.2i]: https://img.shields.io/badge/Truffle_Ruby-23.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
519
422
  [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
520
423
  [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
521
424
  [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
@@ -528,34 +431,35 @@ Thanks for RTFM. ☺️
528
431
  [🤝cb-issues]: https://codeberg.org/kettle-rb/nomono/issues
529
432
  [🤝cb-pulls]: https://codeberg.org/kettle-rb/nomono/pulls
530
433
  [🤝cb-donate]: https://donate.codeberg.org/
531
- [🤝contributing]: CONTRIBUTING.md
532
- [🏀codecov-g]: https://codecov.io/gh/kettle-rb/nomono/graphs/tree.svg
434
+ [🤝contributing]: https://github.com/kettle-rb/nomono/blob/main/CONTRIBUTING.md
435
+ [🏀codecov-g]: https://codecov.io/gh/kettle-rb/nomono/graph/badge.svg
533
436
  [🖐contrib-rocks]: https://contrib.rocks
534
437
  [🖐contributors]: https://github.com/kettle-rb/nomono/graphs/contributors
535
438
  [🖐contributors-img]: https://contrib.rocks/image?repo=kettle-rb/nomono
536
439
  [🚎contributors-gl]: https://gitlab.com/kettle-rb/nomono/-/graphs/main
537
- [🪇conduct]: CODE_OF_CONDUCT.md
440
+ [🪇conduct]: https://github.com/kettle-rb/nomono/blob/main/CODE_OF_CONDUCT.md
538
441
  [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
539
442
  [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
540
443
  [📌semver]: https://semver.org/spec/v2.0.0.html
541
444
  [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
542
445
  [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
543
446
  [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
544
- [📌changelog]: CHANGELOG.md
447
+ [📌changelog]: https://github.com/kettle-rb/nomono/blob/main/CHANGELOG.md
545
448
  [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
546
449
  [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
547
450
  [📌gitmoji]: https://gitmoji.dev
548
451
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
549
452
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
550
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-5.053-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
551
- [🔐security]: SECURITY.md
453
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.086-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
454
+ [🔐security]: https://github.com/kettle-rb/nomono/blob/main/SECURITY.md
552
455
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
553
456
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
554
- [📄license]: LICENSE.txt
555
- [📄license-ref]: https://opensource.org/licenses/MIT
556
- [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
557
- [📄license-compat]: https://dev.to/galtzo/how-to-check-license-compatibility-41h0
558
- [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
457
+ [📄license]: LICENSE.md
458
+ [📄license-ref]: AGPL-3.0-only.md
459
+ [📄license-img]: https://img.shields.io/badge/License-AGPL--3.0--only-259D6C.svg
460
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-x
461
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Incompatible:_Category_X-✗-C0392B.svg?style=flat&logo=Apache
462
+
559
463
  [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
560
464
  [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
561
465
  [🚎yard-current]: http://rubydoc.info/gems/nomono
@@ -567,3 +471,14 @@ Thanks for RTFM. ☺️
567
471
  [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
568
472
  [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
569
473
  [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
474
+
475
+ <!-- kettle-jem:metadata:start -->
476
+ | Field | Value |
477
+ |---|---|
478
+ | Package | nomono |
479
+ | Description | 1️⃣ Provides nomono_gems and eval_nomono_gems to standardize local multi-repo dependency wiring in Gemfiles. |
480
+ | Homepage | https://github.com/kettle-rb/nomono |
481
+ | Source | https://github.com/kettle-rb/nomono/tree/v1.0.1 |
482
+ | License | `AGPL-3.0-only` |
483
+ | Funding | https://github.com/sponsors/pboling, https://issuehunt.io/u/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/kettle-rb, https://patreon.com/galtzo, https://polar.sh/pboling, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/nomono, https://www.buymeacoffee.com/pboling |
484
+ <!-- kettle-jem:metadata:end -->
data/certs/pboling.pem ADDED
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
3
+ ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
4
+ A2NvbTAeFw0yNTA1MDQxNTMzMDlaFw00NTA0MjkxNTMzMDlaMEMxFTATBgNVBAMM
5
+ DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
6
+ LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAruUoo0WA
7
+ uoNuq6puKWYeRYiZekz/nsDeK5x/0IEirzcCEvaHr3Bmz7rjo1I6On3gGKmiZs61
8
+ LRmQ3oxy77ydmkGTXBjruJB+pQEn7UfLSgQ0xa1/X3kdBZt6RmabFlBxnHkoaGY5
9
+ mZuZ5+Z7walmv6sFD9ajhzj+oIgwWfnEHkXYTR8I6VLN7MRRKGMPoZ/yvOmxb2DN
10
+ coEEHWKO9CvgYpW7asIihl/9GMpKiRkcYPm9dGQzZc6uTwom1COfW0+ZOFrDVBuV
11
+ FMQRPswZcY4Wlq0uEBLPU7hxnCL9nKK6Y9IhdDcz1mY6HZ91WImNslOSI0S8hRpj
12
+ yGOWxQIhBT3fqCBlRIqFQBudrnD9jSNpSGsFvbEijd5ns7Z9ZMehXkXDycpGAUj1
13
+ to/5cuTWWw1JqUWrKJYoifnVhtE1o1DZ+LkPtWxHtz5kjDG/zR3MG0Ula0UOavlD
14
+ qbnbcXPBnwXtTFeZ3C+yrWpE4pGnl3yGkZj9SMTlo9qnTMiPmuWKQDatAgMBAAGj
15
+ fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQE8uWvNbPVNRXZ
16
+ HlgPbc2PCzC4bjAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
17
+ A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
18
+ ggGBAJbnUwfJQFPkBgH9cL7hoBfRtmWiCvdqdjeTmi04u8zVNCUox0A4gT982DE9
19
+ wmuN12LpdajxZONqbXuzZvc+nb0StFwmFYZG6iDwaf4BPywm2e/Vmq0YG45vZXGR
20
+ L8yMDSK1cQXjmA+ZBKOHKWavxP6Vp7lWvjAhz8RFwqF9GuNIdhv9NpnCAWcMZtpm
21
+ GUPyIWw/Cw/2wZp74QzZj6Npx+LdXoLTF1HMSJXZ7/pkxLCsB8m4EFVdb/IrW/0k
22
+ kNSfjtAfBHO8nLGuqQZVH9IBD1i9K6aSs7pT6TW8itXUIlkIUI2tg5YzW6OFfPzq
23
+ QekSkX3lZfY+HTSp/o+YvKkqWLUV7PQ7xh1ZYDtocpaHwgxe/j3bBqHE+CUPH2vA
24
+ 0V/FwdTRWcwsjVoOJTrYcff8pBZ8r2MvtAc54xfnnhGFzeRHfcltobgFxkAXdE6p
25
+ DVjBtqT23eugOqQ73umLcYDZkc36vnqGxUBSsXrzY9pzV5gGr2I8YUxMqf6ATrZt
26
+ L9nRqA==
27
+ -----END CERTIFICATE-----
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Nomono
4
4
  module Version
5
- VERSION = "1.0.0"
5
+ VERSION = "1.0.2"
6
6
  end
7
7
  VERSION = Version::VERSION # Traditional Constant Location
8
8
  end
data/lib/nomono.rb CHANGED
@@ -5,6 +5,7 @@ require "version_gem"
5
5
 
6
6
  # This gem
7
7
  require_relative "nomono/version"
8
+
8
9
  require_relative "nomono/resolver"
9
10
  require_relative "nomono/dsl"
10
11
 
@@ -0,0 +1,6 @@
1
+ module Nomono
2
+ module Version
3
+ VERSION: String
4
+ end
5
+ VERSION: String
6
+ end
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.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -64,6 +64,9 @@ dependencies:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
66
  version: '2.0'
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 2.0.6
67
70
  type: :development
68
71
  prerelease: false
69
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,6 +74,9 @@ dependencies:
71
74
  - - "~>"
72
75
  - !ruby/object:Gem::Version
73
76
  version: '2.0'
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 2.0.6
74
80
  - !ruby/object:Gem::Dependency
75
81
  name: bundler-audit
76
82
  requirement: !ruby/object:Gem::Requirement
@@ -140,103 +146,103 @@ dependencies:
140
146
  - !ruby/object:Gem::Version
141
147
  version: 3.0.6
142
148
  - !ruby/object:Gem::Dependency
143
- name: kettle-soup-cover
149
+ name: kettle-test
144
150
  requirement: !ruby/object:Gem::Requirement
145
151
  requirements:
146
152
  - - "~>"
147
153
  - !ruby/object:Gem::Version
148
- version: '1.1'
154
+ version: '2.0'
149
155
  - - ">="
150
156
  - !ruby/object:Gem::Version
151
- version: 1.1.1
157
+ version: 2.0.1
152
158
  type: :development
153
159
  prerelease: false
154
160
  version_requirements: !ruby/object:Gem::Requirement
155
161
  requirements:
156
162
  - - "~>"
157
163
  - !ruby/object:Gem::Version
158
- version: '1.1'
164
+ version: '2.0'
159
165
  - - ">="
160
166
  - !ruby/object:Gem::Version
161
- version: 1.1.1
167
+ version: 2.0.1
162
168
  - !ruby/object:Gem::Dependency
163
- name: kettle-test
169
+ name: ruby-progressbar
164
170
  requirement: !ruby/object:Gem::Requirement
165
171
  requirements:
166
172
  - - "~>"
167
173
  - !ruby/object:Gem::Version
168
- version: '1.0'
169
- - - ">="
170
- - !ruby/object:Gem::Version
171
- version: 1.0.10
174
+ version: '1.13'
172
175
  type: :development
173
176
  prerelease: false
174
177
  version_requirements: !ruby/object:Gem::Requirement
175
178
  requirements:
176
179
  - - "~>"
177
180
  - !ruby/object:Gem::Version
178
- version: '1.0'
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: 1.0.10
181
+ version: '1.13'
182
182
  - !ruby/object:Gem::Dependency
183
- name: ruby-progressbar
183
+ name: stone_checksums
184
184
  requirement: !ruby/object:Gem::Requirement
185
185
  requirements:
186
186
  - - "~>"
187
187
  - !ruby/object:Gem::Version
188
- version: '1.13'
188
+ version: '1.0'
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: 1.0.3
189
192
  type: :development
190
193
  prerelease: false
191
194
  version_requirements: !ruby/object:Gem::Requirement
192
195
  requirements:
193
196
  - - "~>"
194
197
  - !ruby/object:Gem::Version
195
- version: '1.13'
198
+ version: '1.0'
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: 1.0.3
196
202
  - !ruby/object:Gem::Dependency
197
- name: stone_checksums
203
+ name: gitmoji-regex
198
204
  requirement: !ruby/object:Gem::Requirement
199
205
  requirements:
200
206
  - - "~>"
201
207
  - !ruby/object:Gem::Version
202
- version: '1.0'
208
+ version: '2.0'
203
209
  - - ">="
204
210
  - !ruby/object:Gem::Version
205
- version: 1.0.3
211
+ version: 2.0.0
206
212
  type: :development
207
213
  prerelease: false
208
214
  version_requirements: !ruby/object:Gem::Requirement
209
215
  requirements:
210
216
  - - "~>"
211
217
  - !ruby/object:Gem::Version
212
- version: '1.0'
218
+ version: '2.0'
213
219
  - - ">="
214
220
  - !ruby/object:Gem::Version
215
- version: 1.0.3
221
+ version: 2.0.0
216
222
  - !ruby/object:Gem::Dependency
217
- name: gitmoji-regex
223
+ name: kettle-soup-cover
218
224
  requirement: !ruby/object:Gem::Requirement
219
225
  requirements:
220
226
  - - "~>"
221
227
  - !ruby/object:Gem::Version
222
- version: '1.0'
228
+ version: '1.1'
223
229
  - - ">="
224
230
  - !ruby/object:Gem::Version
225
- version: 1.0.3
231
+ version: 1.1.1
226
232
  type: :development
227
233
  prerelease: false
228
234
  version_requirements: !ruby/object:Gem::Requirement
229
235
  requirements:
230
236
  - - "~>"
231
237
  - !ruby/object:Gem::Version
232
- version: '1.0'
238
+ version: '1.1'
233
239
  - - ">="
234
240
  - !ruby/object:Gem::Version
235
- version: 1.0.3
236
- description: "\U0001F372 Provides nomono_gems and eval_nomono_gems to standardize
237
- local multi-repo dependency wiring in Gemfiles."
241
+ version: 1.1.1
242
+ description: 1️⃣ Provides nomono_gems and eval_nomono_gems to standardize local multi-repo
243
+ dependency wiring in Gemfiles.
238
244
  email:
239
- - peter.boling@gmail.com
245
+ - floss@glatzo.com
240
246
  executables: []
241
247
  extensions: []
242
248
  extra_rdoc_files:
@@ -245,9 +251,8 @@ extra_rdoc_files:
245
251
  - CODE_OF_CONDUCT.md
246
252
  - CONTRIBUTING.md
247
253
  - FUNDING.md
248
- - LICENSE.txt
254
+ - LICENSE.md
249
255
  - README.md
250
- - REEK
251
256
  - RUBOCOP.md
252
257
  - SECURITY.md
253
258
  files:
@@ -256,27 +261,27 @@ files:
256
261
  - CODE_OF_CONDUCT.md
257
262
  - CONTRIBUTING.md
258
263
  - FUNDING.md
259
- - LICENSE.txt
264
+ - LICENSE.md
260
265
  - README.md
261
- - REEK
262
266
  - RUBOCOP.md
263
267
  - SECURITY.md
268
+ - certs/pboling.pem
264
269
  - lib/nomono.rb
265
270
  - lib/nomono/bundler.rb
266
271
  - lib/nomono/dsl.rb
267
272
  - lib/nomono/resolver.rb
268
273
  - lib/nomono/version.rb
269
274
  - sig/nomono.rbs
275
+ - sig/nomono/version.rbs
270
276
  homepage: https://github.com/kettle-rb/nomono
271
277
  licenses:
272
- - MIT
278
+ - AGPL-3.0-only
273
279
  metadata:
274
- allowed_push_host: https://rubygems.org
275
280
  homepage_uri: https://nomono.galtzo.com/
276
- source_code_uri: https://github.com/kettle-rb/nomono/tree/v1.0.0
277
- changelog_uri: https://github.com/kettle-rb/nomono/blob/v1.0.0/CHANGELOG.md
281
+ source_code_uri: https://github.com/kettle-rb/nomono/tree/v1.0.2
282
+ changelog_uri: https://github.com/kettle-rb/nomono/blob/v1.0.2/CHANGELOG.md
278
283
  bug_tracker_uri: https://github.com/kettle-rb/nomono/issues
279
- documentation_uri: https://www.rubydoc.info/gems/nomono/1.0.0
284
+ documentation_uri: https://www.rubydoc.info/gems/nomono/1.0.2
280
285
  funding_uri: https://github.com/sponsors/pboling
281
286
  wiki_uri: https://github.com/kettle-rb/nomono/wiki
282
287
  news_uri: https://www.railsbling.com/tags/nomono
@@ -284,7 +289,7 @@ metadata:
284
289
  rubygems_mfa_required: 'true'
285
290
  rdoc_options:
286
291
  - "--title"
287
- - "nomono - \U0001F372 ENV-driven Gemfile macros for sibling gem path resolution"
292
+ - nomono - 1️⃣ ENV-driven Gemfile macros for sibling gem path resolution
288
293
  - "--main"
289
294
  - README.md
290
295
  - "--exclude"
@@ -305,7 +310,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
305
310
  - !ruby/object:Gem::Version
306
311
  version: '0'
307
312
  requirements: []
308
- rubygems_version: 4.0.8
313
+ rubygems_version: 4.0.10
309
314
  specification_version: 4
310
- summary: "\U0001F372 ENV-driven Gemfile macros for sibling gem path resolution"
315
+ summary: 1️⃣ ENV-driven Gemfile macros for sibling gem path resolution
311
316
  test_files: []
metadata.gz.sig CHANGED
@@ -1,2 +1,4 @@
1
- ?���ѡ}����c���ا�Fl���#�t?�|����,�/�)jq ��[K�Ǐ��'�A‰�*�k$������塼3ܬ��!��x.�����
2
- .#=�w�jy ��f�ژ��e![�l��A��Ĥ��/�����I7� �瞾���7�ˊP�Y��� ����莙*�Ch4ɖ mv��nE$V�Ӯ�Vz6�� /�7ߓ�/��$����b��U<ߝ���mj3����kc�.iVٖ�1�뻠G&}�N@�z2=�K;�������(��j��Y!k�ΩNG�Hߡ��T2#����/�X��R+0]
1
+ ��3��<���%�
2
+ ��ݝ��l,.�+F�%+x.Ɛ�p�����[���xB&���]sO���2/���nyb�-5�-��2S��1,��8�9/�����}ʓ- ��oJ�d*PAЊvx�܊��ۯ15��
3
+ Y�����}z���)K3�rG2��ԯ�G�'����e]B�#z��6n}F�qf�sheŒwf �bw� Պw�� �{ �N��0W;��.z-��Ē�WG�1�:kS��m�����ז bX��)UQ.�>�Fx
4
+ Է���{ru�Am�U���X�����\#�{�9^��t���*J��ۅ ��n���u� ْ
data/LICENSE.txt DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2026 Peter H. Boling
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
data/REEK DELETED
File without changes