zotplus-rakehelper 0.0.122 → 0.0.123
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/lib/zotplus-rakehelper/version.rb +1 -1
- data/lib/zotplus-rakehelper.rb +59 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d79a10b7ceca2fcbedb79a6364e2834590453137
|
4
|
+
data.tar.gz: a80d8118d6acc6c67ae4011a1fb25391b8b1260e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f21019349c558b9b71027a6c84a0250f640129d5d0c2e62f4932b8b7d42875378286c78c826359b23fb6818db693a25baa522c14497105dbc71330cca65a4489
|
7
|
+
data.tar.gz: 4c5165a59f052f829ea1d16f54148e064a25e0ed592ae129a5ce1125e9be6d33e2a7723301b20303ed7f07558fba05a01ac12ea32b4aa7979fc7470e28a17b65
|
data/lib/zotplus-rakehelper.rb
CHANGED
@@ -105,7 +105,64 @@ file GR do
|
|
105
105
|
sh "tar xjf #{tmp} -C bin --strip-components 3"
|
106
106
|
end
|
107
107
|
|
108
|
-
|
108
|
+
file SIGNED => XPI do
|
109
|
+
token = lambda {
|
110
|
+
payload = {
|
111
|
+
jti: SecureRandom.base64,
|
112
|
+
iss: ENV['MOZJWTissuer'],
|
113
|
+
iat: Time.now.utc.to_i,
|
114
|
+
exp: Time.now.utc.to_i + 60,
|
115
|
+
}
|
116
|
+
return JWT.encode(payload, ENV['MOZJWTsecret'], 'HS256')
|
117
|
+
}
|
118
|
+
|
119
|
+
duration = lambda{|secs|
|
120
|
+
secs = secs.to_i
|
121
|
+
mins = secs / 60
|
122
|
+
hours = mins / 60
|
123
|
+
days = hours / 24
|
124
|
+
|
125
|
+
if days > 0
|
126
|
+
"#{days} days and #{hours % 24} hours"
|
127
|
+
elsif hours > 0
|
128
|
+
"#{hours} hours and #{mins % 60} minutes"
|
129
|
+
elsif mins > 0
|
130
|
+
"#{mins} minutes and #{secs % 60} seconds"
|
131
|
+
elsif secs >= 0
|
132
|
+
"#{secs} seconds"
|
133
|
+
end
|
134
|
+
}
|
135
|
+
|
136
|
+
url = "https://addons.mozilla.org/api/v3/addons/#{ID}/versions/#{RELEASE}/"
|
137
|
+
|
138
|
+
begin
|
139
|
+
puts "Submit #{XPI} to #{url} for signing"
|
140
|
+
RestClient.put(url, {upload: File.new(XPI)}, { 'Authorization' => "JWT #{token.call}", 'Content-Type' => 'multipart/form-data' })
|
141
|
+
rescue => RestClient::Conflict
|
142
|
+
puts "#{XPI} already signed"
|
143
|
+
end
|
144
|
+
|
145
|
+
status = {}
|
146
|
+
wait = Time.now.to_i
|
147
|
+
(1..100).each{|attempt|
|
148
|
+
sleep 10
|
149
|
+
status = JSON.parse(RestClient.get(url, { 'Authorization' => "JWT #{token.call}"} ).to_s)
|
150
|
+
files = (status['files'] || []).length
|
151
|
+
signed = (files > 0 ? status['files'][0]['signed'] : false)
|
152
|
+
puts "attempt #{attempt} after #{duration.call(Time.now.to_i - wait)}, #{files} files, signed: #{signed}"
|
153
|
+
break if signed
|
154
|
+
}
|
155
|
+
|
156
|
+
raise "Unexpected response: #{status['files'].inspect}" if !status['files'] || status['files'].length != 1 || !status['files'][0]['download_url']
|
157
|
+
raise "Not signed: #{status['files'][0].inspect}" unless status['files'][0]['signed']
|
158
|
+
|
159
|
+
puts "\ngetting signed XPI from #{status['files'][0]['download_url']}"
|
160
|
+
File.open(SIGNED, 'wb'){|f|
|
161
|
+
f.write(RestClient.get(status['files'][0]['download_url'], { 'Authorization' => "JWT #{token.call}"} ).body)
|
162
|
+
}
|
163
|
+
end
|
164
|
+
|
165
|
+
task :deploy => [SIGNED, GR] do
|
109
166
|
throw "GITHUB_TOKEN not set" unless ENV['GITHUB_TOKEN']
|
110
167
|
checkin = `git log -n 1 --pretty=oneline`.strip
|
111
168
|
|
@@ -113,8 +170,6 @@ task :deploy => [XPI, GR] do
|
|
113
170
|
sha1 = keys.detect{|key| key != ''}
|
114
171
|
throw "No SHA1 found in #{keys.inspect}" unless sha1
|
115
172
|
|
116
|
-
xpi = File.exists?(SIGNED) ? SIGNED : XPI
|
117
|
-
|
118
173
|
release = "#{sha1} release: #{XPI}"
|
119
174
|
STDERR.puts "#{RELEASE}"
|
120
175
|
STDERR.puts " checkin=#{checkin}"
|
@@ -123,7 +178,7 @@ task :deploy => [XPI, GR] do
|
|
123
178
|
STDERR.puts "Deploying #{RELEASE} (#{sha1})"
|
124
179
|
|
125
180
|
sh "#{GR} release --user ZotPlus --repo zotero-#{EXTENSION} --tag #{RELEASE} --name 'v#{RELEASE}'"
|
126
|
-
sh "#{GR} upload --user ZotPlus --repo zotero-#{EXTENSION} --tag #{RELEASE} --name '#{XPI}' --file '#{
|
181
|
+
sh "#{GR} upload --user ZotPlus --repo zotero-#{EXTENSION} --tag #{RELEASE} --name '#{XPI}' --file '#{SIGNED}'"
|
127
182
|
|
128
183
|
open("www/_includes/#{EXTENSION}-version.html", 'w'){|f| f.write(RELEASE) }
|
129
184
|
Dir.chdir('www'){
|