appraisal2-rubocop 0.2.3 → 1.0.1

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: f25860be06cbb8f2dc7f5b119d92e855a1317c1e4c1a611cbf210d72aef1a9bc
4
- data.tar.gz: f25ecedb97212633371148ad18f13d08194339bc5e21463c2e2c412749da682b
3
+ metadata.gz: 1d9996b1797de9dcd54682d3879767d67225d4afafb299077b78bb96e2cdc426
4
+ data.tar.gz: e0257a658d69712a6d0ea7d26b4e19507c27e4a35b2302a2186e16b32c0e689b
5
5
  SHA512:
6
- metadata.gz: ce1b056220b5aeef3a8d9e8cf9e47871fa77d2d0a25fdb0077c9d7eda9e2f8a6e0b32f8dc1787b5d43da7921d2e6473711126691180a0d92cc103b05ebde17a1
7
- data.tar.gz: d05a76d8b709501208699ac558a284ff41968e587899d0278167e7aa29ca98bdf4ab7537ad46a96e4b56755582838371c47573b1cdaa30dccb352dcc72cd1853
6
+ metadata.gz: 214ebde1b11fea878433183107bbcffca091bd45523f7ffe495f3aedafe6f253441578c70e054a29f9b1dd6ba6ef98edc2e657cc44ed9e9255db34d3c455c05e
7
+ data.tar.gz: a70f456ea30c3a400bb392964c13716b8cbe77a71dc4fdffa0e449bb7261b2584b40509c5cc523936c2409f910b7dded287dc7371095f27f0cd24e13c8b8e866
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -30,6 +30,100 @@ Please file a bug if you notice a violation of semantic versioning.
30
30
 
31
31
  ### Security
32
32
 
33
+ ## [1.0.1] - 2026-08-06
34
+
35
+ - TAG: [v1.0.1][1.0.1t]
36
+ - COVERAGE: 100.00% -- 86/86 lines in 4 files
37
+ - BRANCH COVERAGE: 95.83% -- 23/24 branches in 4 files
38
+ - 26.32% 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
+
50
+ ### Changed
51
+
52
+ - Re-enabled the StructuredMerge `smorg-rb` semantic Git diff driver for Ruby
53
+ files so this project dogfoods the internal tooling.
54
+
55
+ - kettle-jem-template-20260720-002 - Development Gemfiles now use the released
56
+ `tree_sitter_language_pack` gem 1.13.3 or newer by default.
57
+ - kettle-jem-template-20260725-002 - Version specs now use `anonymous_loader` to
58
+ cover `version.rb` without redefining constants, or are removed when version
59
+ specs are not managed for the project.
60
+ - kettle-jem-template-20260728-001 - Generated Ruby workflows now use clearer
61
+ setup-ruby-flash planning and can prepare appraisal-only jobs without
62
+ installing the main Gemfile bundle.
63
+ - kettle-jem-template-20260801-001 - Generated README gem dashboard links now
64
+ use ClickGems instead of BestGems.
65
+
66
+ ### Fixed
67
+
68
+ - kettle-jem-template-20260720-003 - StructuredMerge Git diff driver config now
69
+ uses the installed `smorg-rb` driver command.
70
+ - kettle-jem-template-20260725-001 - Release pull request branches beginning
71
+ with `feature/release` now run JRuby and TruffleRuby workflows.
72
+ - kettle-jem-template-20260726-002 - Generated version files now document their
73
+ version namespace and constants, reducing warning-only YARD lint output.
74
+ - kettle-jem-template-20260726-003 - Coverage upload steps now treat Coveralls,
75
+ QLTY, and Codecov as optional, so provider outages do not fail CI when local
76
+ coverage thresholds still pass.
77
+ - kettle-jem-template-20260728-002 - Generated RuboCop configs now ignore the
78
+ same `gemfiles/vendor/bundle` tree as `.gitignore`, so vendored dependency
79
+ installs are not reported as project lint debt.
80
+ - kettle-jem-template-20260728-003 - Generated dep-heads workflows now run
81
+ TruffleRuby jobs with current RubyGems and Bundler, avoiding setup failures
82
+ before the test suite starts.
83
+ - kettle-jem-template-20260728-004 - Generated dep-heads workflows now use the
84
+ setup-ruby Bundler install path for direct appraisal Gemfiles, avoiding rv
85
+ lockfile parser failures on Git and path dependencies.
86
+ - kettle-jem-template-20260728-005 - VersionGem bootstrap now creates the
87
+ missing canonical version spec when a project only has shim namespace version
88
+ specs.
89
+ - kettle-jem-template-20260729-001 - Generated JRuby 9.4 workflows now use the
90
+ legacy manual bundle install path, avoiding setup-time Bundler full-index
91
+ failures against `gem.coop`.
92
+ - kettle-jem-template-20260730-001 - Gemspec package file enumeration now runs
93
+ relative to the gemspec directory, so release package contents stay correct
94
+ even when the gemspec is loaded from another working directory.
95
+
96
+ - kettle-jem-template-20260801-002 - Generated RSpec helpers now normalize
97
+ managed configuration block bindings structurally, preventing mixed block
98
+ parameter names from producing invalid configuration after a merge.
99
+ - kettle-jem-template-20260801-003 - Generated project metadata and
100
+ documentation now normalize configured underscore hostnames to valid
101
+ hyphenated hostnames.
102
+ - kettle-jem-template-20260801-004 - Generated organization README logos now
103
+ use GitHub's stable organization avatar endpoint instead of assuming a
104
+ matching Galtzo-hosted asset exists.
105
+
106
+ - kettle-jem-template-20260802-001 - Devcontainer JSON files now merge as JSONC,
107
+ preserving comments and trailing commas during template updates.
108
+
109
+ ## [1.0.0] - 2026-07-18
110
+
111
+ - TAG: [v1.0.0][1.0.0t]
112
+ - COVERAGE: 98.85% -- 86/87 lines in 4 files
113
+ - BRANCH COVERAGE: 95.83% -- 23/24 branches in 4 files
114
+ - 15.79% documented
115
+
116
+ ### Changed
117
+
118
+ - kettle-jem-template-20260716-002 - Generated gemspec manifests now ship fewer
119
+ repository-only files by default to reduce downstream distro packaging churn.
120
+
121
+ ### Fixed
122
+
123
+ - Run RuboCop through an explicit Bundler/RubyGems subprocess environment so
124
+ generated gemfile cleanup does not depend on a bare `rubocop` executable
125
+ being present on `PATH`.
126
+
33
127
  ## [0.2.3] - 2026-07-01
34
128
 
35
129
  - TAG: [v0.2.3][0.2.3t]
@@ -111,7 +205,11 @@ Please file a bug if you notice a violation of semantic versioning.
111
205
  - Replaced the hardcoded local `appraisal2` Gemfile path with ENV-driven
112
206
  `nomono` sibling workspace wiring.
113
207
 
114
- [Unreleased]: https://github.com/appraisal-rb/appraisal2-rubocop/compare/v0.2.3...HEAD
208
+ [Unreleased]: https://github.com/appraisal-rb/appraisal2-rubocop/compare/v1.0.1...HEAD
209
+ [1.0.1]: https://github.com/appraisal-rb/appraisal2-rubocop/compare/v1.0.0...v1.0.1
210
+ [1.0.1t]: https://github.com/appraisal-rb/appraisal2-rubocop/releases/tag/v1.0.1
211
+ [1.0.0]: https://github.com/appraisal-rb/appraisal2-rubocop/compare/v0.2.3...v1.0.0
212
+ [1.0.0t]: https://github.com/appraisal-rb/appraisal2-rubocop/releases/tag/v1.0.0
115
213
  [0.2.3]: https://github.com/appraisal-rb/appraisal2-rubocop/compare/v0.2.2...v0.2.3
116
214
  [0.2.3t]: https://github.com/appraisal-rb/appraisal2-rubocop/releases/tag/v0.2.3
117
215
  [0.2.2]: https://github.com/appraisal-rb/appraisal2-rubocop/compare/v0.2.1...v0.2.2
data/LICENSE.md CHANGED
@@ -3,7 +3,7 @@
3
3
  This project is made available under the following license.
4
4
  Choose the option that best fits your use case:
5
5
 
6
- - [MIT](MIT.md)
6
+ - [MIT](https://github.com/appraisal-rb/appraisal2-rubocop/blob/main/MIT.md)
7
7
 
8
8
  ## Copyright Notice
9
9
 
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
- <a href="https://github.com/appraisal-rb"><img alt="appraisal-rb Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/appraisal-rb/avatar-128px.svg" width="14%" align="right"/></a>
1
+ <a href="https://github.com/appraisal-rb"><img alt="appraisal-rb Logo by GitHub" src="https://github.com/appraisal-rb.png?size=192" width="14%" align="right"/></a>
2
2
 
3
3
  # 💎 Appraisal2::Rubocop
4
4
 
5
- [![Version][👽versioni]][👽version] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄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] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
5
+ [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄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] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
6
6
 
7
- `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know][✉️discord-invite], as I may have missed the [discord notification][✉️discord-invite].
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
8
 
9
9
  ---
10
10
 
@@ -37,8 +37,8 @@ available only to the generator bundle.
37
37
  | Works with Truffle Ruby | [![Truffle Ruby 23.1 Compat][💎truby-23.1i]][🚎truby-23.1-wf] <br/> [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby 33.0 Compat][💎truby-33.0i]][🚎truby-33.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf] [![Truffle Ruby HEAD Compat][💎truby-headi]][🚎3-hd-wf]|
38
38
  | Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
39
39
  | Works with MRI Ruby 3 | [![Ruby 3.1 Compat][💎ruby-3.1i]][🚎ruby-3.1-wf] [![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]|
40
- | 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] |
41
- | 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] |
40
+ | 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] |
41
+ | 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] |
42
42
  | 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] |
43
43
  | Compliance | [![License: MIT][📄license-img]][📄license] [![Apache license compatibility: Category A][📄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] |
44
44
  | 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] |
@@ -60,15 +60,15 @@ The _amazing_ test matrix is powered by the kettle-dev stack.
60
60
  <details markdown="1">
61
61
  <summary>How kettle-dev manages complexity in tests</summary>
62
62
 
63
- | Gem | Source | Role | Daily download rank |
63
+ | Gem | Source | Role | Total downloads |
64
64
  |-----|--------|------|---------------------|
65
- | [appraisal2](https://bestgems.org/gems/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [![Daily download rank for appraisal2](https://img.shields.io/gem/rd/appraisal2.svg?style=flat-square)](https://bestgems.org/gems/appraisal2) |
66
- | [kettle-dev](https://bestgems.org/gems/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [![Daily download rank for kettle-dev](https://img.shields.io/gem/rd/kettle-dev.svg?style=flat-square)](https://bestgems.org/gems/kettle-dev) |
67
- | [kettle-jem](https://bestgems.org/gems/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [![Daily download rank for kettle-jem](https://img.shields.io/gem/rd/kettle-jem.svg?style=flat-square)](https://bestgems.org/gems/kettle-jem) |
68
- | [kettle-soup-cover](https://bestgems.org/gems/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [![Daily download rank for kettle-soup-cover](https://img.shields.io/gem/rd/kettle-soup-cover.svg?style=flat-square)](https://bestgems.org/gems/kettle-soup-cover) |
69
- | [kettle-test](https://bestgems.org/gems/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [![Daily download rank for kettle-test](https://img.shields.io/gem/rd/kettle-test.svg?style=flat-square)](https://bestgems.org/gems/kettle-test) |
70
- | [rubocop-lts](https://bestgems.org/gems/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [![Daily download rank for rubocop-lts](https://img.shields.io/gem/rd/rubocop-lts.svg?style=flat-square)](https://bestgems.org/gems/rubocop-lts) |
71
- | [turbo_tests2](https://bestgems.org/gems/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [![Daily download rank for turbo_tests2](https://img.shields.io/gem/rd/turbo_tests2.svg?style=flat-square)](https://bestgems.org/gems/turbo_tests2) |
65
+ | [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) |
66
+ | [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) |
67
+ | [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) |
68
+ | [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) |
69
+ | [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) |
70
+ | [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) |
71
+ | [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) |
72
72
 
73
73
  </details>
74
74
 
@@ -77,17 +77,14 @@ The _amazing_ test matrix is powered by the kettle-dev stack.
77
77
  <details markdown="1">
78
78
  <summary>Find this repo on federated forges (Coming soon!)</summary>
79
79
 
80
- | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI | Discussions |
81
- |-------------------------------------------------|-----------------------------------------------------------------------|---------------------------|--------------------------|---------------------------|--------------------------|------------------------------|
82
- | 🧪 [appraisal-rb/appraisal2-rubocop on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix | ➖ |
83
- | 🧊 [appraisal-rb/appraisal2-rubocop on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix | ➖ |
84
- | 🐙 [appraisal-rb/appraisal2-rubocop on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix | [💚][gh-discussions] |
85
- | 🎮️ [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] |
80
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
81
+ |-------------------------------------------------|-------------------------------------------|-------------------|------------------|-----------------|----------------|
82
+ | 🧪 [appraisal-rb/appraisal2-rubocop on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
83
+ | 🧊 [appraisal-rb/appraisal2-rubocop on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
84
+ | 🐙 [appraisal-rb/appraisal2-rubocop on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
86
85
 
87
86
  </details>
88
87
 
89
- [gh-discussions]: https://github.com/appraisal-rb/appraisal2-rubocop/discussions
90
-
91
88
  ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/appraisal2-rubocop)](https://tidelift.com/subscription/pkg/rubygems-appraisal2-rubocop?utm_source=rubygems-appraisal2-rubocop&utm_medium=referral&utm_campaign=readme)
92
89
 
93
90
  Available as part of the Tidelift Subscription.
@@ -105,6 +102,7 @@ The maintainers of this and thousands of other packages are working with Tidelif
105
102
 
106
103
  Alternatively:
107
104
 
105
+ - [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
108
106
  - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
109
107
  - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
110
108
  - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
@@ -304,7 +302,7 @@ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with
304
302
  For example:
305
303
 
306
304
  ```ruby
307
- spec.add_dependency("appraisal2-rubocop", "~> 0.0")
305
+ spec.add_dependency("appraisal2-rubocop", "~> 1.0")
308
306
  ```
309
307
 
310
308
  <details markdown="1">
@@ -325,7 +323,7 @@ See [CHANGELOG.md][📌changelog] for a list of releases.
325
323
  ## 📄 License
326
324
 
327
325
  The gem is available as open source under the terms of
328
- the [MIT](MIT.md) [![License: MIT][📄license-img]][📄license-ref].
326
+ the [MIT](https://github.com/appraisal-rb/appraisal2-rubocop/blob/main/MIT.md) [![License: MIT][📄license-img]][📄license-ref].
329
327
 
330
328
  ### © Copyright
331
329
 
@@ -347,11 +345,12 @@ I'm hoping to be able to pay for my kids' health insurance this month,
347
345
  so if you value the work I am doing, I need your support.
348
346
  Please consider sponsoring me or the project.
349
347
 
350
- To join the community or get help 👇️ Join the Discord.
348
+ To join the community or get help, use the RubyForum or Discord.
351
349
 
350
+ [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
352
351
  [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
353
352
 
354
- To say "thanks!" ☝️ Join the Discord or 👇️ send money.
353
+ To say "thanks!" ☝️ Join the community or 👇️ send money.
355
354
 
356
355
  [![Sponsor appraisal-rb/appraisal2-rubocop 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]
357
356
 
@@ -392,11 +391,14 @@ Thanks for RTFM. ☺️
392
391
  [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
393
392
  [✉️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
394
393
  [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
394
+ [✉️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
395
+ [✉️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
396
+ [✉️ruby-forum]: https://www.rubyforum.org/tag/appraisal-rb
395
397
 
396
398
  [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
397
399
  [⛳️gem-namespace]: https://github.com/appraisal-rb/appraisal2-rubocop
398
400
  [⛳️namespace-img]: https://img.shields.io/badge/namespace-Appraisal2::Rubocop-3C2D2D.svg?style=square&logo=ruby&logoColor=white
399
- [⛳️gem-name]: https://bestgems.org/gems/appraisal2-rubocop
401
+ [⛳️gem-name]: https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop
400
402
  [⛳️name-img]: https://img.shields.io/badge/name-appraisal2--rubocop-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
401
403
  [⛳️tag-img]: https://img.shields.io/github/tag/appraisal-rb/appraisal2-rubocop.svg
402
404
  [⛳️tag]: https://github.com/appraisal-rb/appraisal2-rubocop/releases
@@ -437,7 +439,7 @@ Thanks for RTFM. ☺️
437
439
  [📜src-gl]: https://gitlab.com/appraisal-rb/appraisal2-rubocop
438
440
  [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
439
441
  [📜src-cb]: https://codeberg.org/appraisal-rb/appraisal2-rubocop
440
- [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=Github&logoColor=green
442
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
441
443
  [📜src-gh]: https://github.com/appraisal-rb/appraisal2-rubocop
442
444
  [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
443
445
  [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
@@ -445,9 +447,9 @@ Thanks for RTFM. ☺️
445
447
  [📜gh-wiki]: https://github.com/appraisal-rb/appraisal2-rubocop/wiki
446
448
  [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
447
449
  [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
448
- [👽dl-rank]: https://bestgems.org/gems/appraisal2-rubocop
449
- [👽dl-ranki]: https://img.shields.io/gem/rd/appraisal2-rubocop.svg
450
- [👽version]: https://bestgems.org/gems/appraisal2-rubocop
450
+ [👽dl-rank]: https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop
451
+ [👽dl-ranki]: https://img.shields.io/gem/dt/appraisal2-rubocop.svg
452
+ [👽version]: https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop
451
453
  [👽versioni]: https://img.shields.io/gem/v/appraisal2-rubocop.svg
452
454
  [🏀qlty-mnt]: https://qlty.sh/gh/appraisal-rb/projects/appraisal2-rubocop
453
455
  [🏀qlty-mnti]: https://qlty.sh/gh/appraisal-rb/projects/appraisal2-rubocop/maintainability.svg
@@ -529,12 +531,12 @@ Thanks for RTFM. ☺️
529
531
  [📌gitmoji]: https://gitmoji.dev
530
532
  [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
531
533
  [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
532
- [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.052-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
534
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.086-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
533
535
  [🔐security]: https://github.com/appraisal-rb/appraisal2-rubocop/blob/main/SECURITY.md
534
536
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
535
537
  [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
536
538
  [📄license]: LICENSE.md
537
- [📄license-ref]: MIT.md
539
+ [📄license-ref]: https://github.com/appraisal-rb/appraisal2-rubocop/blob/main/MIT.md
538
540
  [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
539
541
  [📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
540
542
  [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
@@ -7,6 +7,26 @@ module Appraisal2
7
7
  class Runner
8
8
  DEFAULT_COMMAND = "rubocop"
9
9
  DEFAULT_FLAGS = ["--autocorrect"].freeze
10
+ RUBOCOP_BIN_PATH_LOADER = "load Gem.activate_bin_path(\"rubocop\", \"rubocop\")"
11
+
12
+ PRESERVED_BUNDLE_VARS = [
13
+ "BUNDLE_GEMFILE",
14
+ "BUNDLE_APP_CONFIG",
15
+ "BUNDLE_PATH",
16
+ "BUNDLE_USER_CONFIG",
17
+ "BUNDLE_USER_CACHE",
18
+ "BUNDLE_USER_PLUGIN",
19
+ "BUNDLE_IGNORE_FUNDING_REQUESTS",
20
+ "BUNDLE_DISABLE_SHARED_GEMS",
21
+ "BUNDLE_VERSION",
22
+ "BUNDLER_VERSION"
23
+ ].freeze
24
+
25
+ PRESERVED_RUNTIME_VARS = [
26
+ "PATH",
27
+ "GEM_HOME",
28
+ "GEM_PATH"
29
+ ].freeze
10
30
 
11
31
  def initialize(path, command: ENV.fetch("APPRAISAL2_RUBOCOP_COMMAND", DEFAULT_COMMAND), flags: nil)
12
32
  @path = path.to_s
@@ -17,18 +37,81 @@ module Appraisal2
17
37
  def correct(content)
18
38
  return content if disabled?
19
39
 
20
- stdout, stderr, status = Open3.capture3(*command_args, stdin_data: content)
21
- raise "appraisal2-rubocop failed: #{command_args.join(" ")}\n#{stderr}" unless status.success?
40
+ env = command_env
41
+ args = command_args(env)
42
+ stdout, stderr, status = Open3.capture3(env, *args, stdin_data: content)
43
+ raise "appraisal2-rubocop failed: #{args.join(" ")}\n#{stderr}" unless status.success?
22
44
 
23
45
  stdout
24
46
  end
25
47
 
26
- def command_args
27
- [@command, "--stdin", @path, *@flags, "--stderr", "--format", "quiet"]
48
+ def command_args(env = nil)
49
+ return [@command, *rubocop_args] unless default_command?
50
+
51
+ env ||= command_env
52
+ [
53
+ Gem.ruby,
54
+ *ruby_require_flags(env),
55
+ "-e",
56
+ RUBOCOP_BIN_PATH_LOADER,
57
+ "--",
58
+ *rubocop_args
59
+ ]
60
+ end
61
+
62
+ def command_env
63
+ current_env = ENV.to_h
64
+ clean_env = bundler_base_env(current_env)
65
+
66
+ # Avoid leaking parent Bundler activation into the RuboCop subprocess.
67
+ # The selected BUNDLE_GEMFILE is preserved below, and the Ruby command
68
+ # explicitly loads bundler/setup only when a bundle has been selected.
69
+ clean_env["BUNDLE_LOCKFILE"] = nil
70
+ clean_env["BUNDLE_BIN_PATH"] = nil
71
+ clean_env["BUNDLER_SETUP"] = nil
72
+
73
+ (PRESERVED_BUNDLE_VARS + PRESERVED_RUNTIME_VARS).each do |key|
74
+ clean_env[key] = current_env[key] if current_env[key]
75
+ end
76
+
77
+ clean_env["RUBYOPT"] = sanitized_rubyopt(current_env["RUBYOPT"])
78
+ clean_env
28
79
  end
29
80
 
30
81
  private
31
82
 
83
+ def default_command?
84
+ @command == DEFAULT_COMMAND
85
+ end
86
+
87
+ def rubocop_args
88
+ ["--stdin", @path, *@flags, "--stderr", "--format", "quiet"]
89
+ end
90
+
91
+ def bundler_base_env(current_env)
92
+ if defined?(Bundler) && Bundler.respond_to?(:unbundled_env)
93
+ Bundler.unbundled_env.to_h.dup
94
+ elsif defined?(Bundler) && Bundler.respond_to?(:original_env)
95
+ Bundler.original_env.to_h.dup
96
+ else
97
+ current_env.to_h
98
+ end
99
+ end
100
+
101
+ def ruby_require_flags(env)
102
+ return ["-rbundler/setup", "-rrubygems"] if env["BUNDLE_GEMFILE"]
103
+
104
+ ["-rrubygems"]
105
+ end
106
+
107
+ def sanitized_rubyopt(rubyopt)
108
+ return unless rubyopt
109
+
110
+ options = rubyopt.split(" ")
111
+ options.reject! { |option| option == "-rbundler/setup" || option.include?("bundler/setup") }
112
+ options.empty? ? nil : options.join(" ")
113
+ end
114
+
32
115
  def configured_flags
33
116
  raw = ENV["APPRAISAL2_RUBOCOP_FLAGS"]
34
117
  return DEFAULT_FLAGS if raw.nil? || raw.empty?
@@ -2,9 +2,12 @@
2
2
 
3
3
  module Appraisal2
4
4
  module Rubocop
5
+ # Version namespace for this gem.
5
6
  module Version
6
- VERSION = "0.2.3"
7
+ # Current gem version.
8
+ VERSION = "1.0.1"
7
9
  end
10
+ # Current gem version exposed at the traditional constant location.
8
11
  VERSION = Version::VERSION # Traditional Constant Location
9
12
  end
10
13
  end
@@ -1,11 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "version_gem"
4
- require_relative "rubocop/version"
5
-
6
3
  require "appraisal/hooks"
7
4
  require "appraisal2/rubocop/runner"
8
- require "appraisal2/rubocop/version"
9
5
 
10
6
  module Appraisal2
11
7
  module Rubocop
@@ -35,7 +31,3 @@ module Appraisal2
35
31
  end
36
32
 
37
33
  Appraisal2::Rubocop.install!
38
-
39
- Appraisal2::Rubocop::Version.class_eval do
40
- extend VersionGem::Basic
41
- end
@@ -1,3 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "appraisal2/rubocop"
4
+ require "version_gem"
5
+ require_relative "appraisal2/rubocop/version"
6
+
7
+ Appraisal2::Rubocop::Version.class_eval do
8
+ extend VersionGem::Basic
9
+ end
data.tar.gz.sig CHANGED
Binary file