kettle-dev 1.1.35 → 1.1.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.envrc +2 -2
- data/.gitignore +1 -0
- data/Appraisals +2 -2
- data/Appraisals.example +1 -1
- data/CHANGELOG.md +43 -1
- data/README.md +51 -27
- data/README.md.example +17 -9
- data/README.md.no-osc.example +17 -9
- data/Rakefile.example +1 -1
- data/exe/kettle-release +38 -19
- data/kettle-dev.gemspec.example +3 -2
- data/lib/kettle/dev/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +6 -6
- metadata.gz.sig +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c9fad405b0585e4d0a4f5651683dca26a005520d41b8a17ffa36cc9ab41cdd45
         | 
| 4 | 
            +
              data.tar.gz: c02e4989597f4b2635daf24215d608b3855c7223799acc2049fe26de47f5ab37
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b7d4aad2935288d5e4a5c79613453c075c1b1896fc45b7a02db73f50c6fa7016f90a7d821720ec051962644d0b5b6a86dd85ed3c7b66541e5779ccfbbcd45766
         | 
| 7 | 
            +
              data.tar.gz: 0de641cbe2fdf22fb4441dc7e92cf6deba7be4ac7fa31e35a3592afdcef6df76780ecd10c8ed0796de6a446c05bf15ca96ca4332ea0050dc2038c56b6b6d090e
         | 
    
        checksums.yaml.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/.envrc
    CHANGED
    
    | @@ -21,8 +21,8 @@ export K_SOUP_COV_DO=true # Means you want code coverage | |
| 21 21 | 
             
            export K_SOUP_COV_COMMAND_NAME="Test Coverage"
         | 
| 22 22 | 
             
            # Available formats are html, xml, rcov, lcov, json, tty
         | 
| 23 23 | 
             
            export K_SOUP_COV_FORMATTERS="html,xml,rcov,lcov,json,tty"
         | 
| 24 | 
            -
            export K_SOUP_COV_MIN_BRANCH= | 
| 25 | 
            -
            export K_SOUP_COV_MIN_LINE= | 
| 24 | 
            +
            export K_SOUP_COV_MIN_BRANCH=79 # Means you want to enforce X% branch coverage
         | 
| 25 | 
            +
            export K_SOUP_COV_MIN_LINE=95 # Means you want to enforce X% line coverage
         | 
| 26 26 | 
             
            export K_SOUP_COV_MIN_HARD=true # Means you want the build to fail if the coverage thresholds are not met
         | 
| 27 27 | 
             
            export K_SOUP_COV_MULTI_FORMATTERS=true
         | 
| 28 28 | 
             
            export K_SOUP_COV_OPEN_BIN= # Means don't try to open coverage results in browser
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/Appraisals
    CHANGED
    
    | @@ -22,9 +22,9 @@ | |
| 22 22 | 
             
            appraise "unlocked_deps" do
         | 
| 23 23 | 
             
              eval_gemfile "modular/coverage.gemfile"
         | 
| 24 24 | 
             
              eval_gemfile "modular/documentation.gemfile"
         | 
| 25 | 
            -
              eval_gemfile "modular/style.gemfile"
         | 
| 26 25 | 
             
              eval_gemfile "modular/optional.gemfile"
         | 
| 27 26 | 
             
              eval_gemfile "modular/recording/r3/recording.gemfile"
         | 
| 27 | 
            +
              eval_gemfile "modular/style.gemfile"
         | 
| 28 28 | 
             
              eval_gemfile "modular/x_std_libs.gemfile"
         | 
| 29 29 | 
             
              # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
         | 
| 30 30 | 
             
              #  eval_gemfile "modular/injected.gemfile"
         | 
| @@ -33,9 +33,9 @@ end | |
| 33 33 | 
             
            # Used for head (nightly) releases of ruby, truffleruby, and jruby.
         | 
| 34 34 | 
             
            # Split into discrete appraisals if one of them needs a dependency locked discretely.
         | 
| 35 35 | 
             
            appraise "head" do
         | 
| 36 | 
            +
              gem "benchmark", "~> 0.4", ">= 0.4.1"
         | 
| 36 37 | 
             
              # Why is cgi gem here? See: https://github.com/vcr/vcr/issues/1057
         | 
| 37 38 | 
             
              gem "cgi", ">= 0.5"
         | 
| 38 | 
            -
              gem "benchmark", "~> 0.4", ">= 0.4.1"
         | 
| 39 39 | 
             
              eval_gemfile "modular/recording/r3/recording.gemfile"
         | 
| 40 40 | 
             
              eval_gemfile "modular/x_std_libs.gemfile"
         | 
| 41 41 | 
             
              # Dependencies injected by the kettle-dev-setup script & kettle:dev:install rake task
         | 
    
        data/Appraisals.example
    CHANGED
    
    | @@ -22,8 +22,8 @@ | |
| 22 22 | 
             
            appraise "unlocked_deps" do
         | 
| 23 23 | 
             
              eval_gemfile "modular/coverage.gemfile"
         | 
| 24 24 | 
             
              eval_gemfile "modular/documentation.gemfile"
         | 
| 25 | 
            -
              eval_gemfile "modular/style.gemfile"
         | 
| 26 25 | 
             
              eval_gemfile "modular/optional.gemfile"
         | 
| 26 | 
            +
              eval_gemfile "modular/style.gemfile"
         | 
| 27 27 | 
             
              eval_gemfile "modular/x_std_libs.gemfile"
         | 
| 28 28 | 
             
            end
         | 
| 29 29 |  | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -20,8 +20,14 @@ Please file a bug if you notice a violation of semantic versioning. | |
| 20 20 |  | 
| 21 21 | 
             
            ### Added
         | 
| 22 22 |  | 
| 23 | 
            +
            - kettle-release: improved --help
         | 
| 24 | 
            +
            - improved documentation of kettle-release
         | 
| 25 | 
            +
            - improved documentation of spec setup with kettle-test
         | 
| 26 | 
            +
             | 
| 23 27 | 
             
            ### Changed
         | 
| 24 28 |  | 
| 29 | 
            +
            - upgrade to kettle-test v1.0.6
         | 
| 30 | 
            +
             | 
| 25 31 | 
             
            ### Deprecated
         | 
| 26 32 |  | 
| 27 33 | 
             
            ### Removed
         | 
| @@ -30,6 +36,38 @@ Please file a bug if you notice a violation of semantic versioning. | |
| 30 36 |  | 
| 31 37 | 
             
            ### Security
         | 
| 32 38 |  | 
| 39 | 
            +
            ## [1.1.37] - 2025-10-21
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            - TAG: [v1.1.37][1.1.37t]
         | 
| 42 | 
            +
            - COVERAGE: 96.04% -- 3949/4112 lines in 26 files
         | 
| 43 | 
            +
            - BRANCH COVERAGE: 80.80% -- 1633/2021 branches in 26 files
         | 
| 44 | 
            +
            - 79.68% documented
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            ### Added
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            - kettle-release: improved --help
         | 
| 49 | 
            +
            - improved documentation of kettle-release
         | 
| 50 | 
            +
            - improved documentation of spec setup with kettle-test
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            ### Changed
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            - upgrade to kettle-test v1.0.6
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            ## [1.1.36] - 2025-10-20
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            - TAG: [v1.1.36][1.1.36t]
         | 
| 59 | 
            +
            - COVERAGE: 96.04% -- 3949/4112 lines in 26 files
         | 
| 60 | 
            +
            - BRANCH COVERAGE: 80.85% -- 1634/2021 branches in 26 files
         | 
| 61 | 
            +
            - 79.68% documented
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            ### Added
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            - More documentation of RC situation
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            ### Fixed
         | 
| 68 | 
            +
             | 
| 69 | 
            +
            - alphabetize dependencies
         | 
| 70 | 
            +
             | 
| 33 71 | 
             
            ## [1.1.35] - 2025-10-20
         | 
| 34 72 |  | 
| 35 73 | 
             
            - TAG: [v1.1.35][1.1.35t]
         | 
| @@ -1119,7 +1157,11 @@ Please file a bug if you notice a violation of semantic versioning. | |
| 1119 1157 | 
             
              - Selecting will run the selected workflow via `act`
         | 
| 1120 1158 | 
             
              - This may move to its own gem in the future.
         | 
| 1121 1159 |  | 
| 1122 | 
            -
            [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1. | 
| 1160 | 
            +
            [Unreleased]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.37...HEAD
         | 
| 1161 | 
            +
            [1.1.37]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.36...v1.1.37
         | 
| 1162 | 
            +
            [1.1.37t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.37
         | 
| 1163 | 
            +
            [1.1.36]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.35...v1.1.36
         | 
| 1164 | 
            +
            [1.1.36t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.36
         | 
| 1123 1165 | 
             
            [1.1.35]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.34...v1.1.35
         | 
| 1124 1166 | 
             
            [1.1.35t]: https://github.com/kettle-rb/kettle-dev/releases/tag/v1.1.35
         | 
| 1125 1167 | 
             
            [1.1.34]: https://github.com/kettle-rb/kettle-dev/compare/v1.1.33...v1.1.34
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,17 +1,25 @@ | |
| 1 | 
            -
            | 📍 NOTE | 
| 2 | 
            -
             | 
| 3 | 
            -
            | RubyGems | 
| 4 | 
            -
            |  | 
| 5 | 
            -
            |  | 
| 6 | 
            -
            |  | 
| 7 | 
            -
            |  | 
| 8 | 
            -
            |  | 
| 9 | 
            -
             | 
| 1 | 
            +
            | 📍 NOTE                                                                                                                                                           |
         | 
| 2 | 
            +
            |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
         | 
| 3 | 
            +
            | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025.                    |
         | 
| 4 | 
            +
            | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
         | 
| 5 | 
            +
            | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies].                                                                  |
         | 
| 6 | 
            +
            | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners.                              |
         | 
| 7 | 
            +
            | If a similar theft happened with my repos/gems, I'd hope some would stand up for me.                                                                              |
         | 
| 8 | 
            +
            | Disenfranchised former-maintainers have started [gem.coop][gem-coop].                                                                                             |
         | 
| 9 | 
            +
            | Once available I will publish there exclusively; unless RubyCentral makes amends with the community.                                                              |
         | 
| 10 | 
            +
            | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of.      |
         | 
| 11 | 
            +
            | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next.                                                                 |
         | 
| 12 | 
            +
            | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server].                             |
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            [rubygems-org]: https://github.com/rubygems/
         | 
| 10 15 | 
             
            [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
         | 
| 11 16 | 
             
            [draper-takeover]: https://joel.drapper.me/p/ruby-central-takeover/
         | 
| 12 17 | 
             
            [ellen-takeover]: https://pup-e.com/blog/goodbye-rubygems/
         | 
| 18 | 
            +
            [simi-removed]: https://www.reddit.com/r/ruby/s/gOk42POCaV
         | 
| 19 | 
            +
            [martin-removed]: https://bsky.app/profile/martinemde.com/post/3m3occezxxs2q
         | 
| 13 20 | 
             
            [draper-lies]: https://joel.drapper.me/p/ruby-central-fact-check/
         | 
| 14 21 | 
             
            [draper-theft]: https://joel.drapper.me/p/ruby-central/
         | 
| 22 | 
            +
            [reinteractive]: https://reinteractive.com/ruby-on-rails
         | 
| 15 23 | 
             
            [gem-coop]: https://gem.coop
         | 
| 16 24 | 
             
            [gem-naming]: https://github.com/gem-coop/gem.coop/issues/12
         | 
| 17 25 | 
             
            [martin-ann]: https://martinemde.com/2025/10/05/announcing-gem-coop.html
         | 
| @@ -205,6 +213,21 @@ This gem integrates tightly with [kettle-test](https://github.com/kettle-rb/kett | |
| 205 213 |  | 
| 206 214 | 
             
            ```ruby
         | 
| 207 215 | 
             
            require "kettle/test/rspec"
         | 
| 216 | 
            +
             | 
| 217 | 
            +
            # ... any other config you need to do.
         | 
| 218 | 
            +
             | 
| 219 | 
            +
            # NOTE: Gemfiles for older rubies (< 2.7) won't have kettle-soup-cover.
         | 
| 220 | 
            +
            #       The rescue LoadError handles that scenario.
         | 
| 221 | 
            +
            begin
         | 
| 222 | 
            +
              require "kettle-soup-cover"
         | 
| 223 | 
            +
              require "simplecov" if Kettle::Soup::Cover::DO_COV # `.simplecov` is run here!
         | 
| 224 | 
            +
            rescue LoadError => error
         | 
| 225 | 
            +
              # check the error message, and re-raise if not what is expected
         | 
| 226 | 
            +
              raise error unless error.message.include?("kettle")
         | 
| 227 | 
            +
            end
         | 
| 228 | 
            +
             | 
| 229 | 
            +
            # This gem (or app)
         | 
| 230 | 
            +
            require "gem-under-test"
         | 
| 208 231 | 
             
            ```
         | 
| 209 232 |  | 
| 210 233 | 
             
            ### Rakefile
         | 
| @@ -449,24 +472,25 @@ What it does: | |
| 449 472 | 
             
              - Exports `SOURCE_DATE_EPOCH`, builds (optionally signed), creates gem checksums, and runs `bundle exec rake release` (prompts for signing key + RubyGems MFA OTP as needed).
         | 
| 450 473 | 
             
            - Options:
         | 
| 451 474 | 
             
              - start_step map (skip directly to a phase):
         | 
| 452 | 
            -
                 | 
| 453 | 
            -
                 | 
| 454 | 
            -
                 | 
| 455 | 
            -
                 | 
| 456 | 
            -
                 | 
| 457 | 
            -
                 | 
| 458 | 
            -
                 | 
| 459 | 
            -
                 | 
| 460 | 
            -
                 | 
| 461 | 
            -
                 | 
| 462 | 
            -
                 | 
| 463 | 
            -
                 | 
| 464 | 
            -
                 | 
| 465 | 
            -
                 | 
| 466 | 
            -
                 | 
| 467 | 
            -
                 | 
| 468 | 
            -
                 | 
| 469 | 
            -
                 | 
| 475 | 
            +
                1. Verify Bundler >= 2.7 (always runs; start at 1 to do everything)
         | 
| 476 | 
            +
                2. Detect version; RubyGems sanity check; confirm CHANGELOG/version; sync copyright years; update badges/headers
         | 
| 477 | 
            +
                3. Run bin/setup
         | 
| 478 | 
            +
                4. Run bin/rake (default task)
         | 
| 479 | 
            +
                5. Run bin/rake appraisal:update if Appraisals present
         | 
| 480 | 
            +
                6. Ensure git user configured; commit release prep
         | 
| 481 | 
            +
                7. Optional local CI with `act` (controlled by K_RELEASE_LOCAL_CI)
         | 
| 482 | 
            +
                8. Ensure trunk in sync across remotes; rebase feature as needed
         | 
| 483 | 
            +
                9. Push current branch to remotes (or 'all' remote)
         | 
| 484 | 
            +
                10. Monitor CI after push; abort on failures
         | 
| 485 | 
            +
                11. Merge feature into trunk and push
         | 
| 486 | 
            +
                12. Checkout trunk and pull latest
         | 
| 487 | 
            +
                13. Gem signing checks/guidance (skip with SKIP_GEM_SIGNING=true)
         | 
| 488 | 
            +
                14. Build gem (bundle exec rake build)
         | 
| 489 | 
            +
                15. Release gem (bundle exec rake release)
         | 
| 490 | 
            +
                16. Generate and validate checksums (bin/gem_checksums)
         | 
| 491 | 
            +
                17. Push checksum commit
         | 
| 492 | 
            +
                18. Create GitHub Release (requires GITHUB_TOKEN)
         | 
| 493 | 
            +
                19. Push tags to remotes (final)
         | 
| 470 494 | 
             
            - Examples:
         | 
| 471 495 | 
             
              - After intermittent CI failure, restart from monitoring: `bundle exec kettle-release start_step=10`
         | 
| 472 496 | 
             
            - Tips:
         | 
    
        data/README.md.example
    CHANGED
    
    | @@ -1,17 +1,25 @@ | |
| 1 | 
            -
            | 📍 NOTE | 
| 2 | 
            -
             | 
| 3 | 
            -
            | RubyGems | 
| 4 | 
            -
            |  | 
| 5 | 
            -
            |  | 
| 6 | 
            -
            |  | 
| 7 | 
            -
            |  | 
| 8 | 
            -
            |  | 
| 9 | 
            -
             | 
| 1 | 
            +
            | 📍 NOTE                                                                                                                                                           |
         | 
| 2 | 
            +
            |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
         | 
| 3 | 
            +
            | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025.                    |
         | 
| 4 | 
            +
            | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
         | 
| 5 | 
            +
            | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies].                                                                  |
         | 
| 6 | 
            +
            | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners.                              |
         | 
| 7 | 
            +
            | If a similar theft happened with my repos/gems, I'd hope some would stand up for me.                                                                              |
         | 
| 8 | 
            +
            | Disenfranchised former-maintainers have started [gem.coop][gem-coop].                                                                                             |
         | 
| 9 | 
            +
            | Once available I will publish there exclusively; unless RubyCentral makes amends with the community.                                                              |
         | 
| 10 | 
            +
            | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of.      |
         | 
| 11 | 
            +
            | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next.                                                                 |
         | 
| 12 | 
            +
            | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server].                             |
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            [rubygems-org]: https://github.com/rubygems/
         | 
| 10 15 | 
             
            [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
         | 
| 11 16 | 
             
            [draper-takeover]: https://joel.drapper.me/p/ruby-central-takeover/
         | 
| 12 17 | 
             
            [ellen-takeover]: https://pup-e.com/blog/goodbye-rubygems/
         | 
| 18 | 
            +
            [simi-removed]: https://www.reddit.com/r/ruby/s/gOk42POCaV
         | 
| 19 | 
            +
            [martin-removed]: https://bsky.app/profile/martinemde.com/post/3m3occezxxs2q
         | 
| 13 20 | 
             
            [draper-lies]: https://joel.drapper.me/p/ruby-central-fact-check/
         | 
| 14 21 | 
             
            [draper-theft]: https://joel.drapper.me/p/ruby-central/
         | 
| 22 | 
            +
            [reinteractive]: https://reinteractive.com/ruby-on-rails
         | 
| 15 23 | 
             
            [gem-coop]: https://gem.coop
         | 
| 16 24 | 
             
            [gem-naming]: https://github.com/gem-coop/gem.coop/issues/12
         | 
| 17 25 | 
             
            [martin-ann]: https://martinemde.com/2025/10/05/announcing-gem-coop.html
         | 
    
        data/README.md.no-osc.example
    CHANGED
    
    | @@ -1,17 +1,25 @@ | |
| 1 | 
            -
            | 📍 NOTE | 
| 2 | 
            -
             | 
| 3 | 
            -
            | RubyGems | 
| 4 | 
            -
            |  | 
| 5 | 
            -
            |  | 
| 6 | 
            -
            |  | 
| 7 | 
            -
            |  | 
| 8 | 
            -
            |  | 
| 9 | 
            -
             | 
| 1 | 
            +
            | 📍 NOTE                                                                                                                                                           |
         | 
| 2 | 
            +
            |-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
         | 
| 3 | 
            +
            | RubyGems (the [GitHub org][rubygems-org], not the website) [suffered][draper-security] a [hostile takeover][ellen-takeover] in September 2025.                    |
         | 
| 4 | 
            +
            | Ultimately [4 maintainers][simi-removed] were [hard removed][martin-removed] and a reason has been given for only 1 of those, while 2 others resigned in protest. |
         | 
| 5 | 
            +
            | It is a [complicated story][draper-takeover] which is difficult to [parse quickly][draper-lies].                                                                  |
         | 
| 6 | 
            +
            | I'm adding notes like this to gems because I [don't condone theft][draper-theft] of repositories or gems from their rightful owners.                              |
         | 
| 7 | 
            +
            | If a similar theft happened with my repos/gems, I'd hope some would stand up for me.                                                                              |
         | 
| 8 | 
            +
            | Disenfranchised former-maintainers have started [gem.coop][gem-coop].                                                                                             |
         | 
| 9 | 
            +
            | Once available I will publish there exclusively; unless RubyCentral makes amends with the community.                                                              |
         | 
| 10 | 
            +
            | The ["Technology for Humans: Joel Draper"][reinteractive-podcast] podcast episode by [reinteractive][reinteractive] is the most cogent summary I'm aware of.      |
         | 
| 11 | 
            +
            | See [here][gem-naming], [here][gem-coop] and [here][martin-ann] for more info on what comes next.                                                                 |
         | 
| 12 | 
            +
            | What I'm doing: A (WIP) proposal for [bundler/gem scopes][gem-scopes], and a (WIP) proposal for a federated [gem server][gem-server].                             |
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            [rubygems-org]: https://github.com/rubygems/
         | 
| 10 15 | 
             
            [draper-security]: https://joel.drapper.me/p/ruby-central-security-measures/
         | 
| 11 16 | 
             
            [draper-takeover]: https://joel.drapper.me/p/ruby-central-takeover/
         | 
| 12 17 | 
             
            [ellen-takeover]: https://pup-e.com/blog/goodbye-rubygems/
         | 
| 18 | 
            +
            [simi-removed]: https://www.reddit.com/r/ruby/s/gOk42POCaV
         | 
| 19 | 
            +
            [martin-removed]: https://bsky.app/profile/martinemde.com/post/3m3occezxxs2q
         | 
| 13 20 | 
             
            [draper-lies]: https://joel.drapper.me/p/ruby-central-fact-check/
         | 
| 14 21 | 
             
            [draper-theft]: https://joel.drapper.me/p/ruby-central/
         | 
| 22 | 
            +
            [reinteractive]: https://reinteractive.com/ruby-on-rails
         | 
| 15 23 | 
             
            [gem-coop]: https://gem.coop
         | 
| 16 24 | 
             
            [gem-naming]: https://github.com/gem-coop/gem.coop/issues/12
         | 
| 17 25 | 
             
            [martin-ann]: https://martinemde.com/2025/10/05/announcing-gem-coop.html
         | 
    
        data/Rakefile.example
    CHANGED
    
    
    
        data/exe/kettle-release
    CHANGED
    
    | @@ -43,28 +43,47 @@ end | |
| 43 43 | 
             
            # Do not guard with __FILE__ == $PROGRAM_NAME because binstubs use Kernel.load.
         | 
| 44 44 | 
             
            if ARGV.include?("-h") || ARGV.include?("--help")
         | 
| 45 45 | 
             
              puts <<~USAGE
         | 
| 46 | 
            -
                Usage: kettle-release [start_step=< | 
| 46 | 
            +
                Usage: kettle-release [start_step=<1-19>]
         | 
| 47 47 |  | 
| 48 | 
            -
                Automates the release flow for a Ruby gem in the host project | 
| 48 | 
            +
                Automates the release flow for a Ruby gem in the host project.
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                Start steps (use start_step=<n> to begin at that step):
         | 
| 51 | 
            +
                  1. Verify Bundler >= 2.7 (always runs; start at 1 to do everything)
         | 
| 52 | 
            +
                  2. Detect version; RubyGems sanity check; confirm CHANGELOG/version; sync copyright years; update badges/headers
         | 
| 53 | 
            +
                  3. Run bin/setup
         | 
| 54 | 
            +
                  4. Run bin/rake (default task)
         | 
| 55 | 
            +
                  5. Run bin/rake appraisal:update if Appraisals present
         | 
| 56 | 
            +
                  6. Ensure git user configured; commit release prep
         | 
| 57 | 
            +
                  7. Optional local CI with `act` (controlled by K_RELEASE_LOCAL_CI)
         | 
| 58 | 
            +
                  8. Ensure trunk in sync across remotes; rebase feature as needed
         | 
| 59 | 
            +
                  9. Push current branch to remotes (or 'all' remote)
         | 
| 60 | 
            +
                 10. Monitor CI after push; abort on failures
         | 
| 61 | 
            +
                 11. Merge feature into trunk and push
         | 
| 62 | 
            +
                 12. Checkout trunk and pull latest
         | 
| 63 | 
            +
                 13. Gem signing checks/guidance (skip with SKIP_GEM_SIGNING=true)
         | 
| 64 | 
            +
                 14. Build gem (bundle exec rake build)
         | 
| 65 | 
            +
                 15. Release gem (bundle exec rake release)
         | 
| 66 | 
            +
                 16. Generate and validate checksums (bin/gem_checksums)
         | 
| 67 | 
            +
                 17. Push checksum commit
         | 
| 68 | 
            +
                 18. Create GitHub Release (requires GITHUB_TOKEN)
         | 
| 69 | 
            +
                 19. Push tags to remotes (final)
         | 
| 49 70 |  | 
| 50 71 | 
             
                Options:
         | 
| 51 | 
            -
                  start_step=<number>         #  | 
| 52 | 
            -
                  - Runs bin/setup and bin/rake sanity checks
         | 
| 53 | 
            -
                  - Prompts to confirm version and changelog updates
         | 
| 54 | 
            -
                  - Commits a release prep change
         | 
| 55 | 
            -
                  - Ensures trunk is up-to-date, pushes branch, and monitors CI (GitHub/GitLab)
         | 
| 56 | 
            -
                  - Merges feature into trunk upon CI success
         | 
| 57 | 
            -
                  - Builds and releases the gem
         | 
| 58 | 
            -
                  - Generates checksums (via bin/gem_checksums), then pushes the checksum commit
         | 
| 59 | 
            -
                  - Optionally creates a GitHub Release
         | 
| 60 | 
            -
                  - Pushes tags to remotes at the end
         | 
| 72 | 
            +
                  start_step=<number>         # Begin at the numbered step above (e.g., 10 to resume at CI monitoring)
         | 
| 61 73 |  | 
| 62 74 | 
             
                Environment:
         | 
| 63 | 
            -
                  SKIP_GEM_SIGNING=true | 
| 64 | 
            -
                  GEM_CERT_USER=<user> | 
| 65 | 
            -
                   | 
| 66 | 
            -
                   | 
| 67 | 
            -
                   | 
| 75 | 
            +
                  SKIP_GEM_SIGNING=true       # Build/release unsigned; avoids PEM password prompts
         | 
| 76 | 
            +
                  GEM_CERT_USER=<user>        # Select certs/<user>.pem for signing
         | 
| 77 | 
            +
                  K_RELEASE_LOCAL_CI=ask|1|0  # Use 'act' locally before push; 'ask' prompts, '1' forces, default off
         | 
| 78 | 
            +
                  K_RELEASE_LOCAL_CI_WORKFLOW # Name of workflow (without .yml) for local CI; defaults to locked_deps or first
         | 
| 79 | 
            +
                  GITHUB_TOKEN / GH_TOKEN     # Optional; enables GitHub release creation and API queries
         | 
| 80 | 
            +
                  GITLAB_TOKEN / GL_TOKEN     # Optional; enables GitLab API queries when applicable
         | 
| 81 | 
            +
                  DEBUG=true                  # Print backtraces on errors
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                Examples:
         | 
| 84 | 
            +
                  kettle-release                       # full flow from the top (start_step=1)
         | 
| 85 | 
            +
                  kettle-release start_step=10         # resume by monitoring CI for the current branch
         | 
| 86 | 
            +
                  SKIP_GEM_SIGNING=true kettle-release start_step=14  # build+release without signing
         | 
| 68 87 | 
             
              USAGE
         | 
| 69 88 | 
             
              exit 0
         | 
| 70 89 | 
             
            end
         | 
| @@ -77,7 +96,7 @@ begin | |
| 77 96 | 
             
              Kettle::Dev::ReleaseCLI.new(start_step: start_step).run
         | 
| 78 97 | 
             
            rescue LoadError => e
         | 
| 79 98 | 
             
              warn("#{script_basename}: could not load dependency: #{e.class}: #{e.message}")
         | 
| 80 | 
            -
              warn(e.backtrace.join("\n")) if ENV["DEBUG"]
         | 
| 99 | 
            +
              warn(Array(e.backtrace).join("\n")) if ENV["DEBUG"]
         | 
| 81 100 | 
             
              exit(1)
         | 
| 82 101 | 
             
            rescue SystemExit => e
         | 
| 83 102 | 
             
              # Preserve exit status, but ensure at least a newline so shells don't show an empty line only.
         | 
| @@ -85,6 +104,6 @@ rescue SystemExit => e | |
| 85 104 | 
             
              raise
         | 
| 86 105 | 
             
            rescue StandardError => e
         | 
| 87 106 | 
             
              warn("#{script_basename}: unexpected error: #{e.class}: #{e.message}")
         | 
| 88 | 
            -
              warn(e.backtrace.join("\n"))
         | 
| 107 | 
            +
              warn(Array(e.backtrace).join("\n"))
         | 
| 89 108 | 
             
              exit(1)
         | 
| 90 109 | 
             
            end
         | 
    
        data/kettle-dev.gemspec.example
    CHANGED
    
    | @@ -115,7 +115,7 @@ Gem::Specification.new do |spec| | |
| 115 115 | 
             
              #       and preferably a modular one (see gemfiles/modular/*.gemfile).
         | 
| 116 116 |  | 
| 117 117 | 
             
              # Dev, Test, & Release Tasks
         | 
| 118 | 
            -
              spec.add_development_dependency("{KETTLE|DEV|GEM}", "~> 1.1") | 
| 118 | 
            +
              spec.add_development_dependency("{KETTLE|DEV|GEM}", "~> 1.1")                           # ruby >= 2.3.0
         | 
| 119 119 |  | 
| 120 120 | 
             
              # Security
         | 
| 121 121 | 
             
              spec.add_development_dependency("bundler-audit", "~> 0.9.2")                      # ruby >= 2.0.0
         | 
| @@ -128,7 +128,7 @@ Gem::Specification.new do |spec| | |
| 128 128 |  | 
| 129 129 | 
             
              # Testing
         | 
| 130 130 | 
             
              spec.add_development_dependency("appraisal2", "~> 3.0")                           # ruby >= 1.8.7, for testing against multiple versions of dependencies
         | 
| 131 | 
            -
              spec.add_development_dependency("kettle-test", "~> 1.0", ">= 1.0. | 
| 131 | 
            +
              spec.add_development_dependency("kettle-test", "~> 1.0", ">= 1.0.6")              # ruby >= 2.3
         | 
| 132 132 |  | 
| 133 133 | 
             
              # Releasing
         | 
| 134 134 | 
             
              spec.add_development_dependency("ruby-progressbar", "~> 1.13")                    # ruby >= 0
         | 
| @@ -146,6 +146,7 @@ Gem::Specification.new do |spec| | |
| 146 146 | 
             
              # spec.add_development_dependency("erb", ">= 2.2")                                  # ruby >= 2.3.0, not SemVer, old rubies get dropped in a patch.
         | 
| 147 147 | 
             
              spec.add_development_dependency("gitmoji-regex", "~> 1.0", ">= 1.0.3")            # ruby >= 2.3.0
         | 
| 148 148 |  | 
| 149 | 
            +
              # HTTP recording for deterministic specs
         | 
| 149 150 | 
             
              # In Ruby 3.5 (HEAD) the CGI library has been pared down, so we also need to depend on gem "cgi" for ruby@head
         | 
| 150 151 | 
             
              # This is done in the "head" appraisal.
         | 
| 151 152 | 
             
              # See: https://github.com/vcr/vcr/issues/1057
         | 
    
        data/lib/kettle/dev/version.rb
    CHANGED
    
    
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: kettle-dev
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.1. | 
| 4 | 
            +
              version: 1.1.37
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Peter H. Boling
         | 
| @@ -108,7 +108,7 @@ dependencies: | |
| 108 108 | 
             
                    version: '1.0'
         | 
| 109 109 | 
             
                - - ">="
         | 
| 110 110 | 
             
                  - !ruby/object:Gem::Version
         | 
| 111 | 
            -
                    version: 1.0. | 
| 111 | 
            +
                    version: 1.0.6
         | 
| 112 112 | 
             
              type: :development
         | 
| 113 113 | 
             
              prerelease: false
         | 
| 114 114 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -118,7 +118,7 @@ dependencies: | |
| 118 118 | 
             
                    version: '1.0'
         | 
| 119 119 | 
             
                - - ">="
         | 
| 120 120 | 
             
                  - !ruby/object:Gem::Version
         | 
| 121 | 
            -
                    version: 1.0. | 
| 121 | 
            +
                    version: 1.0.6
         | 
| 122 122 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 123 123 | 
             
              name: ruby-progressbar
         | 
| 124 124 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -395,10 +395,10 @@ licenses: | |
| 395 395 | 
             
            - MIT
         | 
| 396 396 | 
             
            metadata:
         | 
| 397 397 | 
             
              homepage_uri: https://kettle-dev.galtzo.com/
         | 
| 398 | 
            -
              source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1. | 
| 399 | 
            -
              changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1. | 
| 398 | 
            +
              source_code_uri: https://github.com/kettle-rb/kettle-dev/tree/v1.1.37
         | 
| 399 | 
            +
              changelog_uri: https://github.com/kettle-rb/kettle-dev/blob/v1.1.37/CHANGELOG.md
         | 
| 400 400 | 
             
              bug_tracker_uri: https://github.com/kettle-rb/kettle-dev/issues
         | 
| 401 | 
            -
              documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1. | 
| 401 | 
            +
              documentation_uri: https://www.rubydoc.info/gems/kettle-dev/1.1.37
         | 
| 402 402 | 
             
              funding_uri: https://github.com/sponsors/pboling
         | 
| 403 403 | 
             
              wiki_uri: https://github.com/kettle-rb/kettle-dev/wiki
         | 
| 404 404 | 
             
              news_uri: https://www.railsbling.com/tags/kettle-dev
         | 
    
        metadata.gz.sig
    CHANGED
    
    | Binary file |