zotplus-rakehelper 0.0.122 → 0.0.123
Sign up to get free protection for your applications and to get access to all the features.
- 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'){
|