kettle-deps-floor 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 79abdde57cba32cd503cf13a19d556364165c06df48308b6409a8e54a46e344e
4
+ data.tar.gz: 9d229a9ec1e79fe6826e25780a9cf938868ed41a0de98a906113f064557822d0
5
+ SHA512:
6
+ metadata.gz: 193a07a05e3284be07561f25c1139bf908fba744280953dc35470718aebc9833464f90d60ebd2a71dae239fdf08c3ef1f52fe6b79cc9a451addabf265009ac18
7
+ data.tar.gz: b58d8b3bef3f09b4c324ae9a908a837f36c9fa9f58def13a32e34e25eacd2fe3a1115bc3d7ba5a53df0e2287057c25211aad1711314bad4c9f9cede2e816d753
checksums.yaml.gz.sig ADDED
Binary file
data/CHANGELOG.md ADDED
@@ -0,0 +1,138 @@
1
+ # Changelog
2
+
3
+ [![SemVer 2.0.0][📌semver-img]][📌semver] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog]
4
+
5
+ All notable changes to this project will be documented in this file.
6
+
7
+ The format is based on [Keep a Changelog][📗keep-changelog],
8
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
9
+ and [yes][📌major-versions-not-sacred], platform and engine support are part of the [public API][📌semver-breaking].
10
+ Please file a bug if you notice a violation of semantic versioning.
11
+
12
+ [📌semver]: https://semver.org/spec/v2.0.0.html
13
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-FFDD67.svg?style=flat
14
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
15
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
16
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
17
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-FFDD67.svg?style=flat
18
+
19
+ ## [Unreleased]
20
+
21
+ ### Added
22
+
23
+ ### Changed
24
+
25
+ ### Deprecated
26
+
27
+ ### Removed
28
+
29
+ ### Fixed
30
+
31
+ ### Security
32
+
33
+ ## [0.1.0] - 2026-10-24
34
+
35
+ - TAG: [v0.1.0][0.1.0t]
36
+ - COVERAGE: 99.46% -- 368/370 lines in 5 files
37
+ - BRANCH COVERAGE: 80.98% -- 132/163 branches in 5 files
38
+ - 46.15% documented
39
+
40
+ ### Added
41
+
42
+ - kettle-jem-template-20260720-005 - README Support & Community links now
43
+ include RubyForum.
44
+ - kettle-jem-template-20260726-001 - Projects now include YARD lint
45
+ configuration and documentation dependencies so documentation issues fail
46
+ before generated docs are refreshed.
47
+ - kettle-jem-template-20260727-001 - Spec harness documentation now lists the
48
+ RSpec helpers provided by `kettle-test`.
49
+ - kettle-jem-template-20260913-001 - Templating now also surfaces a review
50
+ entry in `dependency_conflicts.resolve` when a direct development
51
+ dependency doesn't support one or more of this project's declared
52
+ `engines:` and has no template-managed modular home (e.g. `sqlite3` on
53
+ `jruby`). Review each entry and pick a resolution per the project's own
54
+ engine support needs.
55
+
56
+ - [kc] generic-dependency-floor-manager: Add a reusable Prism-based dependency-floor updater with configurable Ruby source globs, explicit family target versions, bounded RubyGems upgrades, holds, dry-run/check/write modes, and safe changelog/commit orchestration.
57
+
58
+ - [kc] ndjson-event-stream: Add --events output using kettle-ndjson for versioned run_start, command_step, and summary records; keep human output on stderr and JSON reports mutually exclusive with event mode.
59
+
60
+ - [kc] template-placeholder-tolerance: Add a placeholder_pattern option (CLI flag and config key) that treats matched template tokens as opaque equal-length constants during Prism parsing, so template sources like kettle-jem's {KJ|...} files remain floor-managed; records whose floors or names sit inside placeholder spans are never planned or edited.
61
+
62
+ ### Changed
63
+
64
+ - kettle-jem-template-20260716-002 - Gemspecs now ship fewer repository-only
65
+ files, reducing package noise for downstream packagers.
66
+ - kettle-jem-template-20260720-002 - Development Gemfiles now use the released
67
+ `tree_sitter_language_pack` gem 1.13.3 or newer by default.
68
+ - kettle-jem-template-20260725-002 - Version specs now use `anonymous_loader` to
69
+ cover `version.rb` without redefining constants, or are removed when version
70
+ specs are not managed for the project.
71
+ - kettle-jem-template-20260728-001 - Generated Ruby workflows now use clearer
72
+ setup-ruby-flash planning and can prepare appraisal-only jobs without
73
+ installing the main Gemfile bundle.
74
+ - kettle-jem-template-20260801-001 - Generated README gem dashboard links now
75
+ use ClickGems instead of BestGems.
76
+
77
+ - [kc] kettle-jem/template: updated 120 project files:
78
+ - code and tests (7)
79
+ - configuration (3)
80
+ - dependencies (44)
81
+ - documentation (3)
82
+ - other (42)
83
+ - workflows (21)
84
+
85
+ - Relicense to AGPL-3.0-only (matching kettle-dev, whose runtime API this gem uses) before first release; the SkyWalking Eyes workflow and .licenserc.yaml are removed, as license-eye only supports permissive main licenses.
86
+
87
+ - [kc] kettle-jem/prepare: updated 3 project files:
88
+ - dependencies (3)
89
+
90
+ ### Fixed
91
+
92
+ - kettle-jem-template-20260720-003 - StructuredMerge Git diff driver config now
93
+ uses the installed `smorg-rb` driver command.
94
+ - kettle-jem-template-20260725-001 - Release pull request branches beginning
95
+ with `feature/release` now run JRuby and TruffleRuby workflows.
96
+ - kettle-jem-template-20260726-002 - Generated version files now document their
97
+ version namespace and constants, reducing warning-only YARD lint output.
98
+ - kettle-jem-template-20260726-003 - Coverage upload steps now treat Coveralls,
99
+ QLTY, and Codecov as optional, so provider outages do not fail CI when local
100
+ coverage thresholds still pass.
101
+ - kettle-jem-template-20260728-002 - Generated RuboCop configs now ignore the
102
+ same `gemfiles/vendor/bundle` tree as `.gitignore`, so vendored dependency
103
+ installs are not reported as project lint debt.
104
+ - kettle-jem-template-20260728-003 - Generated dep-heads workflows now run
105
+ TruffleRuby jobs with current RubyGems and Bundler, avoiding setup failures
106
+ before the test suite starts.
107
+ - kettle-jem-template-20260728-004 - Generated dep-heads workflows now use the
108
+ setup-ruby Bundler install path for direct appraisal Gemfiles, avoiding rv
109
+ lockfile parser failures on Git and path dependencies.
110
+ - kettle-jem-template-20260728-005 - VersionGem bootstrap now creates the
111
+ missing canonical version spec when a project only has shim namespace version
112
+ specs.
113
+ - kettle-jem-template-20260730-001 - Gemspec package file enumeration now runs
114
+ relative to the gemspec directory, so release package contents stay correct
115
+ even when the gemspec is loaded from another working directory.
116
+ - kettle-jem-template-20260801-002 - Generated RSpec helpers now normalize
117
+ managed configuration block bindings structurally, preventing mixed block
118
+ parameter names from producing invalid configuration after a merge.
119
+ - kettle-jem-template-20260801-003 - Generated project metadata and
120
+ documentation now normalize configured underscore hostnames to valid
121
+ hyphenated hostnames.
122
+ - kettle-jem-template-20260801-004 - Generated organization README logos now
123
+ use GitHub's stable organization avatar endpoint instead of assuming a
124
+ matching Galtzo-hosted asset exists.
125
+ - kettle-jem-template-20260802-001 - Devcontainer JSON files now merge as JSONC,
126
+ preserving comments and trailing commas during template updates.
127
+
128
+ - Lower the kettle-dev gemspec floor to the released 3.1.24; 3.1.25 is not yet published, which made the gem unresolvable from a clean bundle.
129
+
130
+ - Declare the prism runtime dependency; the AST-based floor parsing needs it and it is only a default gem on Ruby 3.3+, so older Rubies could not load the tool.
131
+
132
+ - Scan embedded template text with a position loop over explicit MatchData; Regexp.last_match inside to_enum(:scan) blocks is unreliable on TruffleRuby.
133
+
134
+ - Whitelist the gem itself for license-eye (it is unresolvable from the registry before first release) and commit a release-mode Gemfile.lock with checksums and no local path remotes.
135
+
136
+ [Unreleased]: https://github.com/kettle-dev/kettle-deps-floor/compare/v0.1.0...HEAD
137
+ [0.1.0]: https://github.com/kettle-dev/kettle-deps-floor/compare/93a58879cd306c9011fb0e1bc6f0bce548101117...v0.1.0
138
+ [0.1.0t]: https://github.com/kettle-dev/kettle-deps-floor/releases/tag/v0.1.0
data/LICENSE.md ADDED
@@ -0,0 +1,10 @@
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
+ - [MIT](https://github.com/kettle-dev/kettle-deps-floor/blob/main/MIT.md)
7
+
8
+ ## Copyright Notice
9
+
10
+ - Copyright (c) 2026 Peter H. Boling
data/README.md ADDED
@@ -0,0 +1,460 @@
1
+ <a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by GitHub" src="https://github.com/kettle-dev.png?size=192" width="14%" align="right"/></a>
2
+
3
+ # 💎 Kettle::Deps::Floor
4
+
5
+ [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: AGPL-3.0-only][📄license-img]][📄license] [![Total downloads][👽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]
6
+
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
8
+
9
+ ---
10
+
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
+
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
+
15
+ <details markdown="1">
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
17
+
18
+ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
19
+
20
+ </details>
21
+
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>
23
+
24
+ `kettle-deps-floor` discovers the minimum dependency versions already supported by your Ruby gems and raises their declared floors when newer versions are safe to use. It can inspect gemspecs and configured template sources, with upgrade limits, dry-run reports, checks, and controlled commits.
25
+
26
+ ## 💡 Info you can shake a stick at
27
+
28
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
29
+ |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
30
+ | 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]|
31
+ | 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]|
32
+ | Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
33
+ | 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]|
34
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![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] |
35
+ | 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] |
36
+ | 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] |
37
+ | 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] |
38
+ | 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] |
39
+ | 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] |
40
+ | `...` 💖 | [![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] |
41
+
42
+ ### Compatibility
43
+
44
+ Compatible with MRI Ruby 3.2.0+, JRuby, and TruffleRuby.
45
+ CI workflows and Appraisals are generated for MRI Ruby 3.2.0+.
46
+ The current MRI CI lane runs on Linux and macOS.
47
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
48
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
49
+ not practical for the current toolchain.
50
+
51
+ <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>
52
+
53
+ The _amazing_ test matrix is powered by the kettle-dev stack.
54
+
55
+ <details markdown="1">
56
+ <summary>How kettle-dev manages complexity in tests</summary>
57
+
58
+ | Gem | Source | Role | Total downloads |
59
+ |-----|--------|------|---------------------|
60
+ | [appraisal2](https://clickgems.clickhouse.com/dashboard/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [![Total downloads for appraisal2](https://img.shields.io/gem/dt/appraisal2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2) |
61
+ | [appraisal2-rubocop](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [![Total downloads for appraisal2-rubocop](https://img.shields.io/gem/dt/appraisal2-rubocop.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) |
62
+ | [kettle-dev](https://clickgems.clickhouse.com/dashboard/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [![Total downloads for kettle-dev](https://img.shields.io/gem/dt/kettle-dev.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-dev) |
63
+ | [kettle-jem](https://clickgems.clickhouse.com/dashboard/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [![Total downloads for kettle-jem](https://img.shields.io/gem/dt/kettle-jem.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-jem) |
64
+ | [kettle-soup-cover](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [![Total downloads for kettle-soup-cover](https://img.shields.io/gem/dt/kettle-soup-cover.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) |
65
+ | [kettle-test](https://clickgems.clickhouse.com/dashboard/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [![Total downloads for kettle-test](https://img.shields.io/gem/dt/kettle-test.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-test) |
66
+ | [rubocop-lts](https://clickgems.clickhouse.com/dashboard/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [![Total downloads for rubocop-lts](https://img.shields.io/gem/dt/rubocop-lts.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/rubocop-lts) |
67
+ | [turbo_tests2](https://clickgems.clickhouse.com/dashboard/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [![Total downloads for turbo_tests2](https://img.shields.io/gem/dt/turbo_tests2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/turbo_tests2) |
68
+
69
+ </details>
70
+
71
+ ### Federated DVCS
72
+
73
+ <details markdown="1">
74
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
75
+
76
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
77
+ |-------------------------------------------------|-------------------------------------------|-------------------|------------------|-----------------|----------------|
78
+ | 🧪 [kettle-dev/kettle-deps-floor on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
79
+ | 🧊 [kettle-dev/kettle-deps-floor on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
80
+ | 🐙 [kettle-dev/kettle-deps-floor on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
81
+
82
+ </details>
83
+
84
+ ### Enterprise Support
85
+
86
+ For enterprise support from the maintainer, use [Upwork][👨🏼‍🏫expsup-upwork] or [CodeMentor][👨🏼‍🏫expsup-codementor].
87
+
88
+ Other support channels:
89
+
90
+ - [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
91
+ - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
92
+
93
+ ## ✨ Installation
94
+
95
+ Install the gem and add to the application's Gemfile by executing:
96
+
97
+ ```console
98
+ bundle add kettle-deps-floor
99
+ ```
100
+
101
+ If bundler is not being used to manage dependencies, install the gem by executing:
102
+
103
+ ```console
104
+ gem install kettle-deps-floor
105
+ ```
106
+
107
+ ## ⚙️ Configuration
108
+
109
+ By default, `kettle-deps-floor` scans `*.gemspec` in the selected project root
110
+ and queries RubyGems for newer compatible versions. A project may add
111
+ `.kettle-deps-floor.yml` to configure source globs, explicit family-release
112
+ versions, and dependency holds:
113
+
114
+ ```yaml
115
+ sources:
116
+ - "*.gemspec"
117
+ - "Gemfile"
118
+ target_versions:
119
+ token-resolver: "2.0.14"
120
+ holds:
121
+ rubocop-minitest: "Wait until the standard gem range permits this release."
122
+ ```
123
+
124
+ `target_versions` is useful for sibling-family lockstep releases. Holds suppress
125
+ a named dependency from automatic updates. Use quoted version strings.
126
+
127
+ ## 🔧 Basic Usage
128
+
129
+ Preview compatible dependency-floor updates without changing files:
130
+
131
+ ```console
132
+ bundle exec kettle-deps-floor --upgrade patch
133
+ ```
134
+
135
+ Check a family member against an explicit just-released sibling version:
136
+
137
+ ```console
138
+ bundle exec kettle-deps-floor --check --target token-resolver=2.0.14
139
+ ```
140
+
141
+ Apply updates, add a keyed Unreleased changelog entry, and commit only the
142
+ changed source files (the default write behavior):
143
+
144
+ ```console
145
+ bundle exec kettle-deps-floor --write --upgrade minor
146
+ ```
147
+
148
+ Use `--no-commit` to write without committing, `--no-changelog` to omit the
149
+ changelog update, `--source GLOB` to add or override scanned Ruby source paths,
150
+ and `--only GEM[,GEM...]` to limit the update set. The `major`, `minor`, and
151
+ `patch` limits constrain registry candidates; existing non-floor requirements
152
+ are still checked before a target is accepted. Changes use Prism AST source
153
+ locations rather than text substitutions.
154
+
155
+ Use `--events` to stream compact NDJSON progress events to stdout; the normal
156
+ human summary moves to stderr so the stream remains machine-readable. Events
157
+ use kettle-ndjson's versioned `run_start`, `command_step`, and `summary` schema.
158
+
159
+ ## 🔐 Security
160
+
161
+ See [SECURITY.md][🔐security].
162
+
163
+ ## 🤝 Contributing
164
+
165
+ If you need some ideas of where to help, you could work on adding more code coverage,
166
+ check [issues][🤝gh-issues] or [PRs][🤝gh-pulls], or use the gem and think about how it could be better.
167
+
168
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
169
+
170
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
171
+
172
+ ### 🚀 Release Instructions
173
+
174
+ See [CONTRIBUTING.md][🤝contributing].
175
+
176
+ ### Code Coverage
177
+
178
+ <details markdown="1">
179
+ <summary>Coverage service badges</summary>
180
+
181
+ [![Coverage Graph][🏀codecov-g]][🏀codecov]
182
+
183
+ [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
184
+
185
+ [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
186
+
187
+ </details>
188
+
189
+ ### 🪇 Code of Conduct
190
+
191
+ Everyone interacting with this project's codebases, issue trackers,
192
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
193
+
194
+ ## 🌈 Contributors
195
+
196
+ [![Contributors][🖐contributors-img]][🖐contributors]
197
+
198
+ Made with [contributors-img][🖐contrib-rocks].
199
+
200
+ Also see GitLab Contributors: [https://gitlab.com/kettle-dev/kettle-deps-floor/-/graphs/main][🚎contributors-gl]
201
+
202
+ ## 📌 Versioning
203
+
204
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
205
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
206
+
207
+ For example:
208
+
209
+ ```ruby
210
+ spec.add_dependency("kettle-deps-floor", "~> 0.0")
211
+ ```
212
+
213
+ <details markdown="1">
214
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
215
+
216
+ Dropping support for a platform can be a breaking change for affected users.
217
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
218
+
219
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
220
+ read this article from the creator of SemVer:
221
+
222
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
223
+
224
+ </details>
225
+
226
+ See [CHANGELOG.md][📌changelog] for a list of releases.
227
+
228
+ ## 📄 License
229
+
230
+ The gem is available under the following license: [AGPL-3.0-only](https://github.com/kettle-dev/kettle-deps-floor/blob/main/AGPL-3.0-only.md).
231
+ See [LICENSE.md][📄license] for details.
232
+
233
+ If none of the available licenses suit your use case, please [contact us](mailto:floss@galtzo.com) to discuss a custom commercial license.
234
+
235
+ ### © Copyright
236
+
237
+ See [LICENSE.md][📄license] for the official copyright notice.
238
+
239
+ <details markdown="1">
240
+ <summary>Copyright holders</summary>
241
+
242
+ - Copyright (c) 2026 Peter H. Boling
243
+
244
+ </details>
245
+
246
+ ## 🤑 A request for help
247
+
248
+ Maintainers have teeth and need to pay their dentists.
249
+ After getting laid off in an RIF in March, and encountering difficulty finding a new one,
250
+ I began spending most of my time building open source tools.
251
+ I'm hoping to be able to pay for my kids' health insurance this month,
252
+ so if you value the work I am doing, I need your support.
253
+ Please consider sponsoring me or the project.
254
+
255
+ To join the community or get help, use the RubyForum or Discord.
256
+
257
+ [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
258
+ [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
259
+
260
+ To say "thanks!" ☝️ Join the community or 👇️ send money.
261
+
262
+ [![Sponsor kettle-dev/kettle-deps-floor on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
263
+
264
+ ### Please give the project a star ⭐ ♥.
265
+
266
+ 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.
267
+
268
+ Thanks for RTFM. ☺️
269
+
270
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
271
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
272
+ [⛳liberapay]: https://liberapay.com/pboling/donate
273
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/kettle-dev
274
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/kettle-dev
275
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/kettle-dev
276
+ [🖇osc-backers]: https://opencollective.com/kettle-dev#backer
277
+ [🖇osc-backers-i]: https://opencollective.com/kettle-dev/backers/badge.svg?style=flat
278
+ [🖇osc-sponsors]: https://opencollective.com/kettle-dev#sponsor
279
+ [🖇osc-sponsors-i]: https://opencollective.com/kettle-dev/sponsors/badge.svg?style=flat
280
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/kettle-dev?style=for-the-badge
281
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/kettle-dev?style=for-the-badge
282
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/kettle-dev?style=for-the-badge
283
+ [🖇osc]: https://opencollective.com/kettle-dev
284
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
285
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
286
+ [🖇sponsor]: https://github.com/sponsors/pboling
287
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
288
+ [🖇kofi]: https://ko-fi.com/pboling
289
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
290
+ [🖇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
291
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
292
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
293
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
294
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
295
+ [🖇floss-funding.dev]: https://floss-funding.dev
296
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
297
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
298
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
299
+ [✉️ruby-friends-img]: https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white
300
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
301
+ [✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
302
+ [✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
303
+ [✉️ruby-forum]: https://www.rubyforum.org/tag/kettle-dev
304
+
305
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
306
+ [⛳️gem-namespace]: https://github.com/kettle-dev/kettle-deps-floor
307
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-Kettle::Deps::Floor-3C2D2D.svg?style=square&logo=ruby&logoColor=white
308
+ [⛳️gem-name]: https://clickgems.clickhouse.com/dashboard/kettle-deps-floor
309
+ [⛳️name-img]: https://img.shields.io/badge/name-kettle--deps--floor-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
310
+ [⛳️tag-img]: https://img.shields.io/github/tag/kettle-dev/kettle-deps-floor.svg
311
+ [⛳️tag]: https://github.com/kettle-dev/kettle-deps-floor/releases
312
+ [🚂maint-blog]: http://www.railsbling.com/tags/kettle-deps-floor
313
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
314
+ [🚂maint-contact]: http://www.railsbling.com/contact
315
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
316
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
317
+ [💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
318
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
319
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
320
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
321
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
322
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
323
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
324
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
325
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
326
+ [💖🌳linktree]: https://linktr.ee/galtzo
327
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
328
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
329
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
330
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
331
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
332
+ [💖🧊berg]: https://codeberg.org/pboling
333
+ [💖🐙hub]: https://github.org/pboling
334
+ [💖🛖hut]: https://sr.ht/~galtzo/
335
+ [💖🧪lab]: https://gitlab.com/pboling
336
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
337
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
338
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
339
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
340
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
341
+ [🚂railsbling]: http://www.railsbling.com
342
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
343
+ [📜src-gl]: https://gitlab.com/kettle-dev/kettle-deps-floor
344
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
345
+ [📜src-cb]: https://codeberg.org/kettle-dev/kettle-deps-floor
346
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
347
+ [📜src-gh]: https://github.com/kettle-dev/kettle-deps-floor
348
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
349
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
350
+ [📜gl-wiki]: https://gitlab.com/kettle-dev/kettle-deps-floor/-/wikis/home
351
+ [📜gh-wiki]: https://github.com/kettle-dev/kettle-deps-floor/wiki
352
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
353
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
354
+ [👽dl-rank]: https://clickgems.clickhouse.com/dashboard/kettle-deps-floor
355
+ [👽dl-ranki]: https://img.shields.io/gem/dt/kettle-deps-floor.svg
356
+ [👽version]: https://clickgems.clickhouse.com/dashboard/kettle-deps-floor
357
+ [👽versioni]: https://img.shields.io/gem/v/kettle-deps-floor.svg
358
+ [🏀qlty-mnt]: https://qlty.sh/gh/kettle-dev/projects/kettle-deps-floor
359
+ [🏀qlty-mnti]: https://qlty.sh/gh/kettle-dev/projects/kettle-deps-floor/maintainability.svg
360
+ [🏀qlty-cov]: https://qlty.sh/gh/kettle-dev/projects/kettle-deps-floor/metrics/code?sort=coverageRating
361
+ [🏀qlty-covi]: https://qlty.sh/gh/kettle-dev/projects/kettle-deps-floor/coverage.svg
362
+ [🏀codecov]: https://codecov.io/gh/kettle-dev/kettle-deps-floor
363
+ [🏀codecovi]: https://codecov.io/gh/kettle-dev/kettle-deps-floor/graph/badge.svg
364
+ [🏀coveralls]: https://coveralls.io/github/kettle-dev/kettle-deps-floor?branch=main
365
+ [🏀coveralls-img]: https://coveralls.io/repos/github/kettle-dev/kettle-deps-floor/badge.svg?branch=main
366
+ [🚎ruby-3.2-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/ruby-3.2.yml
367
+ [🚎ruby-3.3-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/ruby-3.3.yml
368
+ [🚎ruby-3.4-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/ruby-3.4.yml
369
+ [🚎jruby-10.0-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/jruby-10.0.yml
370
+ [🚎truby-24.2-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/truffleruby-24.2.yml
371
+ [🚎truby-25.0-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/truffleruby-25.0.yml
372
+ [🚎truby-33.0-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/truffleruby-33.0.yml
373
+ [🚎2-cov-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/coverage.yml
374
+ [🚎2-cov-wfi]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/coverage.yml/badge.svg
375
+ [🚎3-hd-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/heads.yml
376
+ [🚎3-hd-wfi]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/heads.yml/badge.svg
377
+ [🚎5-st-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/style.yml
378
+ [🚎5-st-wfi]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/style.yml/badge.svg
379
+ [🚎9-t-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/truffle.yml
380
+ [🚎9-t-wfi]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/truffle.yml/badge.svg
381
+ [🚎10-j-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/jruby.yml
382
+ [🚎10-j-wfi]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/jruby.yml/badge.svg
383
+ [🚎11-c-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/current.yml
384
+ [🚎11-c-wfi]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/current.yml/badge.svg
385
+ [🚎12-crh-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/dep-heads.yml
386
+ [🚎12-crh-wfi]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/dep-heads.yml/badge.svg
387
+ [🚎13-🔒️-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/locked_deps.yml
388
+ [🚎13-🔒️-wfi]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/locked_deps.yml/badge.svg
389
+ [🚎14-🔓️-wf]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/unlocked_deps.yml
390
+ [🚎14-🔓️-wfi]: https://github.com/kettle-dev/kettle-deps-floor/actions/workflows/unlocked_deps.yml/badge.svg
391
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
392
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
393
+ [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
394
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
395
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
396
+ [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
397
+ [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
398
+ [💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
399
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
400
+ [💎jruby-10.0i]: https://img.shields.io/badge/JRuby-10.0-FBE742?style=for-the-badge&logo=ruby&logoColor=red
401
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
402
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
403
+ [🤝gh-issues]: https://github.com/kettle-dev/kettle-deps-floor/issues
404
+ [🤝gh-pulls]: https://github.com/kettle-dev/kettle-deps-floor/pulls
405
+ [🤝gl-issues]: https://gitlab.com/kettle-dev/kettle-deps-floor/-/issues
406
+ [🤝gl-pulls]: https://gitlab.com/kettle-dev/kettle-deps-floor/-/merge_requests
407
+ [🤝cb-issues]: https://codeberg.org/kettle-dev/kettle-deps-floor/issues
408
+ [🤝cb-pulls]: https://codeberg.org/kettle-dev/kettle-deps-floor/pulls
409
+ [🤝cb-donate]: https://donate.codeberg.org/
410
+ [🤝contributing]: https://github.com/kettle-dev/kettle-deps-floor/blob/main/CONTRIBUTING.md
411
+ [🏀codecov-g]: https://codecov.io/gh/kettle-dev/kettle-deps-floor/graph/badge.svg
412
+ [🖐contrib-rocks]: https://contrib.rocks
413
+ [🖐contributors]: https://github.com/kettle-dev/kettle-deps-floor/graphs/contributors
414
+ [🖐contributors-img]: https://contrib.rocks/image?repo=kettle-dev/kettle-deps-floor
415
+ [🚎contributors-gl]: https://gitlab.com/kettle-dev/kettle-deps-floor/-/graphs/main
416
+ [🪇conduct]: https://github.com/kettle-dev/kettle-deps-floor/blob/main/CODE_OF_CONDUCT.md
417
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
418
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
419
+ [📌semver]: https://semver.org/spec/v2.0.0.html
420
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
421
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
422
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
423
+ [📌changelog]: https://github.com/kettle-dev/kettle-deps-floor/blob/main/CHANGELOG.md
424
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
425
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
426
+ [📌gitmoji]: https://gitmoji.dev
427
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
428
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
429
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.370-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
430
+ [🔐security]: https://github.com/kettle-dev/kettle-deps-floor/blob/main/SECURITY.md
431
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
432
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
433
+ [📄license]: LICENSE.md
434
+ [📄license-ref]: https://github.com/kettle-dev/kettle-deps-floor/blob/main/AGPL-3.0-only.md
435
+ [📄license-img]: https://img.shields.io/badge/License-AGPL--3.0--only-259D6C.svg
436
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-x
437
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Incompatible:_Category_X-%E2%9C%97-C0392B.svg?style=flat&logo=Apache
438
+
439
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
440
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
441
+ [🚎yard-current]: http://rubydoc.info/gems/kettle-deps-floor
442
+ [🚎yard-head]: https://kettle-deps-floor.galtzo.com
443
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
444
+ [💎SHA_checksums]: https://gitlab.com/kettle-dev/kettle-deps-floor/-/tree/main/checksums
445
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
446
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
447
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
448
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
449
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/
450
+
451
+ <!-- kettle-jem:metadata:start -->
452
+ | Field | Value |
453
+ |---|---|
454
+ | Package | kettle-deps-floor |
455
+ | Description | 💎 Discover and raise RubyGems dependency floors in gemspecs and configured template sources, with upgrade limits, dry-run reports, checks, and controlled commits. |
456
+ | Homepage | https://github.com/kettle-dev/kettle-deps-floor |
457
+ | Source | https://github.com/kettle-dev/kettle-deps-floor |
458
+ | License | `AGPL-3.0-only` |
459
+ | 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://www.buymeacoffee.com/pboling |
460
+ <!-- kettle-jem:metadata:end -->
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ $stdout.sync = true
5
+ $stderr.sync = true
6
+
7
+ repo_lib = File.expand_path("../lib", __dir__)
8
+ $LOAD_PATH.unshift(repo_lib) if File.directory?(repo_lib) && !$LOAD_PATH.include?(repo_lib)
9
+
10
+ require "kettle/deps/floor"
11
+
12
+ exit(Kettle::Deps::Floor::CLI.run(ARGV))