gempilot 0.2.3 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4b895f3da5d0d8866cd13f835dd3c1ca71d8d433571c2d7531735636eeb6ad0
4
- data.tar.gz: 878dad31a22bdecdb9ff607ebecf2330432070219edfc3e08b66a5022c205d77
3
+ metadata.gz: 72e379c74f157a19076c82e54b15e2d3581610d11089542ebd32b346971cfdb5
4
+ data.tar.gz: e7b8f296a83f2c4b9e24f4bb3fd7757a034b1cca00fa461f4baa3e5c878b6f51
5
5
  SHA512:
6
- metadata.gz: ccfc9410fe3ccd3cc8f49e3ca34f68ef334a50183eb95d0788f09c9a5e972fcb4b1244cdfeee188b9898e25ba1c4542d6c4cf24ee24e54edebd4e8b8e907f6a1
7
- data.tar.gz: e7deb74172aa7bcd75d84f41ad2d80022d9befcd7f1b69990c6f8b9fe6002168d8b25581242dbded279bdd601986c24552b1431573ff0ed62bec8316734e50fe
6
+ metadata.gz: bcb608a185c3808045cf017dcf0629d9b6034be93fd8457129728abed9cfd5191288893c214b3b38a46fdbda267676cdb7976ec2013c053a4b7796cd551a9c73
7
+ data.tar.gz: 867f02bab2332352a5035db336f5b1073f5d4a4f08f49f75b76b84eb2fdd4d490dba4c9f36fed4b60d0a7844791509dce074d3f13d488b08000e16bc0c70bdc8
data/.rubocop.yml CHANGED
@@ -15,7 +15,6 @@ plugins:
15
15
  - rubocop-performance
16
16
  - rubocop-rake
17
17
  - rubocop-rspec
18
- - rubocop-design
19
18
 
20
19
  AllCops:
21
20
  NewCops: enable
@@ -280,17 +279,3 @@ RSpec/NamedSubject:
280
279
  # have_file_content matcher accepts a filename string in expect()
281
280
  RSpec/ExpectActual:
282
281
  Enabled: false
283
-
284
- Design/PositionalArguments:
285
- Enabled: false
286
-
287
- Design/KeywordArguments:
288
- Enabled: false
289
-
290
- Design/TotalArguments:
291
- Enabled: false
292
-
293
- Design/AgentNounClassName:
294
- Exclude:
295
- - 'lib/gempilot/generator.rb'
296
- - 'test/gempilot/cli/generator_test.rb'
data/CLAUDE.md CHANGED
@@ -35,4 +35,5 @@ A CLI tool for creating and managing Ruby gems, built on CommandKit.
35
35
  - RuboCop with framework-specific plugins
36
36
  - GitHub Actions CI workflow (`.github/workflows/ci.yml`)
37
37
  - `git ls-files`-based gemspec with glob fallback for non-git repos
38
- - Version lifecycle rake tasks installed via `Gempilot::VersionTask.new` (a `Rake::TaskLib`): `version:current/bump/commit/tag/untag/reset/revert`, composite `version:release`/`version:unrelease`, and `version:github:release/unrelease/list`
38
+ - Version lifecycle rake tasks installed via `Gempilot::VersionTask.new` (a `Rake::TaskLib`): `version:current/bump/commit/tag/untag/reset/revert` and composite `version:release`/`version:unrelease`
39
+ - Publishing rake tasks (mixed into `VersionTask` via `Gempilot::ReleaseTasks`): `release` (all remotes), `release:rubygems`, `release:github`, `release:list:github`, `unrelease`, `unrelease:github`. These override and reuse bundler's `bundler/gem_tasks` release chain; `release:source_control_push` is replaced with `Gempilot::Origin` to push commit+tag idempotently
data/README.md CHANGED
@@ -86,7 +86,8 @@ gempilot bump major
86
86
 
87
87
  ### `gempilot release`
88
88
 
89
- Delegates to `rake release` to build and push the gem.
89
+ Delegates to `rake release`, which publishes the current version to all remotes
90
+ (RubyGems + GitHub).
90
91
 
91
92
  ### `gempilot console`
92
93
 
@@ -120,9 +121,12 @@ Generated gems include rake tasks for the full version lifecycle:
120
121
  | `rake version:revert` | Revert the last version bump commit |
121
122
  | `rake version:release` | Bump, commit, and tag (combined) |
122
123
  | `rake version:unrelease` | Untag and reset (combined) |
123
- | `rake version:github:release` | Push and create a GitHub release |
124
- | `rake version:github:unrelease` | Delete the GitHub release |
125
- | `rake version:github:list` | List GitHub releases |
124
+ | `rake release` | Publish the current version to all remotes (RubyGems + GitHub) |
125
+ | `rake release:rubygems` | Build and push the gem to RubyGems |
126
+ | `rake release:github` | Push commit + tag, then create the GitHub release |
127
+ | `rake release:list:github` | List GitHub releases |
128
+ | `rake unrelease` | Delete the release from all remotes that support it |
129
+ | `rake unrelease:github` | Delete the GitHub release and remote tag |
126
130
 
127
131
  ## Development
128
132
 
@@ -18,16 +18,8 @@ RuboCop::RakeTask.new
18
18
  require "gempilot/version_task"
19
19
  Gempilot::VersionTask.new
20
20
 
21
- namespace :zeitwerk do
22
- desc "Verify all files follow Zeitwerk naming conventions"
23
- task :validate do
24
- ruby "-e", <<~RUBY
25
- require '<%= @require_path %>'
26
- <%= @module_name %>::LOADER.eager_load(force: true)
27
- puts 'Zeitwerk: All files loaded successfully.'
28
- RUBY
29
- end
30
- end
21
+ require "gempilot/zeitwerk_task"
22
+ Gempilot::ZeitwerkTask.new
31
23
 
32
24
  <% if @test_framework == :minitest -%>
33
25
  task default: [:test, :rubocop]
@@ -25,12 +25,6 @@ AllCops:
25
25
  Exclude:
26
26
  - bin/*
27
27
  - vendor/**/*
28
- - lib/core_ext/**/*
29
- - rakelib/project.rb
30
- - rakelib/project_version.rb
31
- - rakelib/version_tag.rb
32
- - rakelib/github_release.rb
33
- - rakelib/strict_shell.rb
34
28
  <% if @hyphenated -%>
35
29
  - lib/<%= @gem_name %>.rb
36
30
  <% end -%>
@@ -124,17 +118,12 @@ Metrics/BlockLength:
124
118
  <% end -%>
125
119
  Exclude:
126
120
  - "<%= @gem_name %>.gemspec"
127
- - "rakelib/**/*"
128
121
 
129
- # Gemspec and rake files use patterns that trigger Claude cops legitimately.
122
+ # Gemspec uses patterns that trigger Claude cops legitimately.
130
123
  Claude/NoFancyUnicode:
131
124
  Exclude:
132
125
  - "<%= @gem_name %>.gemspec"
133
126
 
134
- Claude/MysteryRegex:
135
- Exclude:
136
- - "rakelib/**/*"
137
-
138
127
  # Zeitwerk loaders are mutable by design — only flag literal mutable values.
139
128
  Style/MutableConstant:
140
129
  EnforcedStyle: literals
@@ -6,8 +6,7 @@ require "zeitwerk"
6
6
  ##
7
7
  # Top-level namespace for the <%= @gem_name %> gem.
8
8
  module <%= @module_name %>
9
- LOADER = Zeitwerk::Loader.for_gem
10
- LOADER.setup
9
+ LOADER = Zeitwerk::Loader.for_gem.tap(&:setup)
11
10
 
12
11
  ##
13
12
  # Base error class for <%= @gem_name %>.
@@ -9,8 +9,7 @@ require "zeitwerk"
9
9
  <% end -%>
10
10
  <%= " " * i %>module <%= part %>
11
11
  <% end -%>
12
- <%= " " * @module_parts.size %>LOADER = Zeitwerk::Loader.for_gem_extension(<%= @base_module %>)
13
- <%= " " * @module_parts.size %>LOADER.setup
12
+ <%= " " * @module_parts.size %>LOADER = Zeitwerk::Loader.for_gem_extension(<%= @base_module %>).tap(&:setup)
14
13
 
15
14
  <%= " " * @module_parts.size %>##
16
15
  <%= " " * @module_parts.size %># Base error class for <%= @gem_name %>.
@@ -1,7 +1,10 @@
1
1
  ENV["MT_NO_PLUGINS"] = "1" unless ENV["RM_INFO"]
2
2
 
3
3
  require "minitest/autorun"
4
- require "minitest/reporters"
5
- Minitest::Reporters.use! [Minitest::Reporters::DefaultReporter.new(color: true)]
4
+
5
+ unless ENV["RM_INFO"]
6
+ require "minitest/reporters"
7
+ Minitest::Reporters.use! [Minitest::Reporters::DefaultReporter.new(color: true)]
8
+ end
6
9
 
7
10
  require "<%= @require_path %>"