1
1
# frozen_string_literal: true
2
2
3
3
require "json"
4
+ require "digest"
4
5
require "rake/tasklib"
5
6
6
7
class Releaser < Rake ::TaskLib
@@ -114,6 +115,18 @@ def define
114
115
desc "Build gem files for all projects"
115
116
task build : FRAMEWORKS . map { |f | "#{ f } :build" } + [ "rails:build" ]
116
117
118
+ task checksums : :build do
119
+ Dir . chdir ( root ) do
120
+ puts
121
+ [ *FRAMEWORKS , "rails" ] . each do |fw |
122
+ path = gem_path ( fw )
123
+ sha = ::Digest ::SHA256 . file ( path )
124
+ puts "#{ sha } #{ path } "
125
+ end
126
+ puts
127
+ end
128
+ end
129
+
117
130
task :bundle do
118
131
sh "bundle check"
119
132
end
@@ -127,6 +140,10 @@ def define
127
140
raise "GitHub CLI is not logged in. Please run `gh auth login` to log in."
128
141
end
129
142
end
143
+ default_repo = `git config --local --get-regexp '\. gh-resolved$'` . strip
144
+ if !$?. success? || default_repo . empty?
145
+ raise "GitHub CLI does not have a default repo configured. Please run `gh repo set-default rails/rails`"
146
+ end
130
147
end
131
148
132
149
task :commit do
@@ -155,15 +172,17 @@ def define
155
172
Dir . chdir ( root ) do
156
173
File . write ( "pkg/#{ version } .md" , release_notes )
157
174
158
- sh "gh release create #{ tag } -t #{ version } -F pkg/#{ version } .md --draft#{ pre_release? ? " --prerelease" : "" } "
175
+ sh "gh release create --verify-tag #{ tag } -t #{ version } -F pkg/#{ version } .md --draft#{ pre_release? ? " --prerelease" : "" } "
159
176
end
160
177
end
161
178
162
179
desc "Release all gems and create a tag"
163
180
task release : %w( check_gh_client prep_release commit tag create_release )
164
181
182
+ task pre_push : [ :build , :checksums ]
183
+
165
184
desc "Push the gem to rubygems.org and the npm package to npmjs.com"
166
- task push : FRAMEWORKS . map { |f | "#{ f } :push" } + [ "rails:push" ]
185
+ task push : [ :pre_push ] + FRAMEWORKS . map { |f | "#{ f } :push" } + [ "rails:push" ]
167
186
end
168
187
169
188
def pre_release?
0 commit comments