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 +4 -4
- data/.rubocop.yml +0 -15
- data/CLAUDE.md +2 -1
- data/README.md +8 -4
- data/data/templates/gem/Rakefile.erb +2 -10
- data/data/templates/gem/dotfiles/rubocop.yml.erb +1 -12
- data/data/templates/gem/lib/gem_name.rb.erb +1 -2
- data/data/templates/gem/lib/gem_name_extension.rb.erb +1 -2
- data/data/templates/gem/test/test_helper.rb.erb +5 -2
- data/docs/superpowers/plans/2026-07-20-release-task-hierarchy.md +583 -0
- data/docs/superpowers/specs/2026-07-20-release-task-hierarchy-design.md +229 -0
- data/issues.rec +55 -11
- data/lib/gempilot/cli/gem_builder.rb +13 -1
- data/lib/gempilot/gem_constant.rb +8 -8
- data/lib/gempilot/github_release.rb +0 -2
- data/lib/gempilot/origin.rb +52 -0
- data/lib/gempilot/project.rb +9 -1
- data/lib/gempilot/release_tasks.rb +73 -0
- data/lib/gempilot/version.rb +1 -1
- data/lib/gempilot/version_task.rb +3 -16
- data/lib/gempilot/zeitwerk_task.rb +61 -0
- data/vendor/vendored.gemv +0 -0
- metadata +7 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 72e379c74f157a19076c82e54b15e2d3581610d11089542ebd32b346971cfdb5
|
|
4
|
+
data.tar.gz: e7b8f296a83f2c4b9e24f4bb3fd7757a034b1cca00fa461f4baa3e5c878b6f51
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
|
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
|
|
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
|
|
124
|
-
| `rake
|
|
125
|
-
| `rake
|
|
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
|
-
|
|
22
|
-
|
|
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
|
|
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
|
|
@@ -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
|
-
|
|
5
|
-
|
|
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 %>"
|