wonko_the_sane 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/wonko_the_sane +12 -28
- data/data/sources.json +0 -5
- data/lib/wonko_the_sane.rb +6 -26
- data/lib/wonko_the_sane/input/base_input.rb +5 -10
- data/lib/wonko_the_sane/input/forge_installer_profile_input.rb +29 -47
- data/lib/wonko_the_sane/input/forgefiles_mods_input.rb +4 -7
- data/lib/wonko_the_sane/input/jenkins_input.rb +11 -15
- data/lib/wonko_the_sane/input/mojang_input.rb +52 -61
- data/lib/wonko_the_sane/{reader_writer.rb → new_format.rb} +31 -35
- data/lib/wonko_the_sane/old_format.rb +123 -0
- data/lib/wonko_the_sane/registry.rb +38 -23
- data/lib/wonko_the_sane/rules.rb +6 -6
- data/lib/wonko_the_sane/timestamps.rb +4 -4
- data/lib/wonko_the_sane/tools/update_nem.rb +20 -18
- data/lib/wonko_the_sane/util/configuration.rb +54 -2
- data/lib/wonko_the_sane/util/deep_storage_cache.rb +10 -8
- data/lib/wonko_the_sane/util/extraction_cache.rb +5 -4
- data/lib/wonko_the_sane/util/file_hash_cache.rb +6 -6
- data/lib/wonko_the_sane/util/http_cache.rb +50 -105
- data/lib/wonko_the_sane/util/maven_identifier.rb +8 -14
- data/lib/wonko_the_sane/util/task_stack.rb +7 -6
- data/lib/wonko_the_sane/{version_parser.rb → util/version_parser.rb} +10 -14
- data/lib/wonko_the_sane/version.rb +1 -1
- data/lib/wonko_the_sane/versionlists/base_version_list.rb +22 -15
- data/lib/wonko_the_sane/versionlists/curse_version_list.rb +15 -16
- data/lib/wonko_the_sane/versionlists/forge_version_list.rb +34 -37
- data/lib/wonko_the_sane/versionlists/forgefiles_mods_list.rb +3 -7
- data/lib/wonko_the_sane/versionlists/jenkins_version_list.rb +6 -15
- data/lib/wonko_the_sane/versionlists/liteloader_version_list.rb +18 -28
- data/lib/wonko_the_sane/versionlists/vanilla_legacy_version_list.rb +6 -6
- data/lib/wonko_the_sane/versionlists/vanilla_version_list.rb +6 -8
- data/lib/wonko_the_sane/wonko_version.rb +32 -12
- metadata +71 -15
- data/lib/wonko_the_sane/wonkoweb_uploader.rb +0 -162
@@ -2,11 +2,11 @@ require_relative 'base_version_list'
|
|
2
2
|
|
3
3
|
class VanillaLegacyVersionList < BaseVersionList
|
4
4
|
def initialize
|
5
|
-
super
|
5
|
+
super 'net.minecraft'
|
6
6
|
end
|
7
7
|
|
8
8
|
def get_versions
|
9
|
-
WonkoTheSane.data_json('minecraft.json')[:versions].map
|
9
|
+
WonkoTheSane.data_json('minecraft.json')[:versions].map { |obj| [obj[:id], obj] }
|
10
10
|
end
|
11
11
|
|
12
12
|
def get_version(id)
|
@@ -20,10 +20,10 @@ class VanillaLegacyVersionList < BaseVersionList
|
|
20
20
|
file.client.extra[:processArguments] = data[:processArguments]
|
21
21
|
file.client.mainClass = data[:mainClass] if data.has_key? :mainClass
|
22
22
|
file.client.appletClass = data[:appletClass] if data.has_key? :appletClass
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
file.client.downloads = [
|
23
|
+
main_lib = VersionLibrary.new
|
24
|
+
main_lib.name = 'net.minecraft:minecraft:' + file.version
|
25
|
+
main_lib.url = 'http://s3.amazonaws.com/Minecraft.Download/versions/' + file.version + '/' + file.version + '.jar'
|
26
|
+
file.client.downloads = [ main_lib ]
|
27
27
|
|
28
28
|
file.client.folders['minecraft/screenshots'] = ['general.screenshots']
|
29
29
|
file.client.folders['minecraft/resourcepackks'] = ['mc.resourcepacks'] if file.time >= 1372430921
|
@@ -3,8 +3,8 @@ require 'date'
|
|
3
3
|
|
4
4
|
class VanillaVersionList < BaseVersionList
|
5
5
|
def initialize
|
6
|
-
super
|
7
|
-
@input = MojangInput.new
|
6
|
+
super 'net.minecraft'
|
7
|
+
@input = MojangInput.new 'net.minecraft'
|
8
8
|
end
|
9
9
|
|
10
10
|
def get_versions
|
@@ -12,7 +12,7 @@ class VanillaVersionList < BaseVersionList
|
|
12
12
|
@latest_release = result[:latest][:release]
|
13
13
|
@latest_snapshot = result[:latest][:snapshot]
|
14
14
|
|
15
|
-
|
15
|
+
result[:versions].map { |obj| obj[:id] }
|
16
16
|
end
|
17
17
|
|
18
18
|
def get_version(id)
|
@@ -23,13 +23,11 @@ class VanillaVersionList < BaseVersionList
|
|
23
23
|
get_json_cached url
|
24
24
|
end
|
25
25
|
files = @input.parse json
|
26
|
-
mcfile = files.find
|
27
|
-
|
28
|
-
end
|
29
|
-
if mcfile and mcfile.time > DateTime.iso8601('2013-06-25T15:08:56+02:00').to_time.to_i
|
26
|
+
mcfile = files.find { |file| file.uid == 'net.minecraft' }
|
27
|
+
if mcfile && mcfile.time > DateTime.iso8601('2013-06-25T15:08:56+02:00').to_time.to_i
|
30
28
|
files
|
31
29
|
else
|
32
30
|
[]
|
33
31
|
end
|
34
32
|
end
|
35
|
-
end
|
33
|
+
end
|
@@ -1,10 +1,14 @@
|
|
1
1
|
class Download
|
2
|
-
attr_accessor :
|
2
|
+
attr_accessor :internal_url # not serialized, used for DownloadsFixer when the url isn't direct (requires user interaction)
|
3
3
|
attr_accessor :url
|
4
4
|
attr_accessor :size
|
5
5
|
attr_accessor :sha256
|
6
6
|
attr_accessor :rules # [Rule]
|
7
7
|
|
8
|
+
def usable_url
|
9
|
+
internal_url.nil? ? url : internal_url
|
10
|
+
end
|
11
|
+
|
8
12
|
def type
|
9
13
|
'general.downloads'
|
10
14
|
end
|
@@ -35,6 +39,8 @@ class Download
|
|
35
39
|
dl = VersionLibraryNative.new
|
36
40
|
when 'general.downloads'
|
37
41
|
dl = FileDownload.new
|
42
|
+
when 'mc.jarmods'
|
43
|
+
dl = Jarmod.new
|
38
44
|
end
|
39
45
|
|
40
46
|
dl.from_json json
|
@@ -64,13 +70,27 @@ end
|
|
64
70
|
|
65
71
|
class VersionLibrary < Download
|
66
72
|
attr_accessor :name
|
67
|
-
attr_accessor :
|
73
|
+
attr_accessor :maven_base_url
|
74
|
+
|
75
|
+
def ==(other)
|
76
|
+
self.class == other.class && name == other.name && url == other.url && sha256 == other.sha256 && rules == other.rules
|
77
|
+
end
|
68
78
|
|
69
79
|
def type
|
70
80
|
'java.libraries'
|
71
81
|
end
|
72
82
|
def url
|
73
|
-
|
83
|
+
if @url
|
84
|
+
@url
|
85
|
+
elsif @maven_base_url
|
86
|
+
@maven_base_url + WonkoTheSane::Util::MavenIdentifier.new(@name).to_path
|
87
|
+
else
|
88
|
+
nil
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def explicit_url?
|
93
|
+
!@url.nil?
|
74
94
|
end
|
75
95
|
|
76
96
|
def maven
|
@@ -80,9 +100,9 @@ class VersionLibrary < Download
|
|
80
100
|
def to_json
|
81
101
|
obj = super
|
82
102
|
obj[:name] = @name
|
83
|
-
obj[
|
103
|
+
obj[:@maven_base_url] = @maven_base_url if @maven_base_url
|
84
104
|
|
85
|
-
|
105
|
+
unless @url
|
86
106
|
obj.delete :url
|
87
107
|
end
|
88
108
|
|
@@ -92,10 +112,10 @@ class VersionLibrary < Download
|
|
92
112
|
def from_json(json)
|
93
113
|
super
|
94
114
|
@name = json[:name]
|
95
|
-
@
|
115
|
+
@maven_base_url = json[:@maven_base_url]
|
96
116
|
|
97
117
|
# if the absolute url is equal to the expected maven url we clear the absolute url
|
98
|
-
if @
|
118
|
+
if @maven_base_url && @url == url
|
99
119
|
@url = nil
|
100
120
|
end
|
101
121
|
end
|
@@ -109,7 +129,7 @@ end
|
|
109
129
|
|
110
130
|
class Jarmod < VersionLibrary
|
111
131
|
def type
|
112
|
-
'mc.
|
132
|
+
'mc.jarmods'
|
113
133
|
end
|
114
134
|
end
|
115
135
|
|
@@ -123,7 +143,7 @@ class Referenced
|
|
123
143
|
end
|
124
144
|
|
125
145
|
def ==(other)
|
126
|
-
@uid == other.uid
|
146
|
+
self.class == other.class && @uid == other.uid && @version == other.version
|
127
147
|
end
|
128
148
|
end
|
129
149
|
|
@@ -160,9 +180,9 @@ class WonkoVersion
|
|
160
180
|
end
|
161
181
|
end
|
162
182
|
|
163
|
-
|
164
|
-
|
165
|
-
|
183
|
+
attr_accessor :client
|
184
|
+
attr_accessor :server
|
185
|
+
attr_accessor :common
|
166
186
|
|
167
187
|
def initialize
|
168
188
|
@requires = []
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wonko_the_sane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 02JanDal
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-10-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -167,7 +167,7 @@ dependencies:
|
|
167
167
|
- !ruby/object:Gem::Version
|
168
168
|
version: '0'
|
169
169
|
- !ruby/object:Gem::Dependency
|
170
|
-
name:
|
170
|
+
name: yajl-ruby
|
171
171
|
requirement: !ruby/object:Gem::Requirement
|
172
172
|
requirements:
|
173
173
|
- - ">="
|
@@ -181,7 +181,7 @@ dependencies:
|
|
181
181
|
- !ruby/object:Gem::Version
|
182
182
|
version: '0'
|
183
183
|
- !ruby/object:Gem::Dependency
|
184
|
-
name:
|
184
|
+
name: colorize
|
185
185
|
requirement: !ruby/object:Gem::Requirement
|
186
186
|
requirements:
|
187
187
|
- - ">="
|
@@ -195,7 +195,7 @@ dependencies:
|
|
195
195
|
- !ruby/object:Gem::Version
|
196
196
|
version: '0'
|
197
197
|
- !ruby/object:Gem::Dependency
|
198
|
-
name:
|
198
|
+
name: oga
|
199
199
|
requirement: !ruby/object:Gem::Requirement
|
200
200
|
requirements:
|
201
201
|
- - ">="
|
@@ -209,7 +209,7 @@ dependencies:
|
|
209
209
|
- !ruby/object:Gem::Version
|
210
210
|
version: '0'
|
211
211
|
- !ruby/object:Gem::Dependency
|
212
|
-
name:
|
212
|
+
name: logging
|
213
213
|
requirement: !ruby/object:Gem::Requirement
|
214
214
|
requirements:
|
215
215
|
- - ">="
|
@@ -223,7 +223,7 @@ dependencies:
|
|
223
223
|
- !ruby/object:Gem::Version
|
224
224
|
version: '0'
|
225
225
|
- !ruby/object:Gem::Dependency
|
226
|
-
name:
|
226
|
+
name: aws-sdk
|
227
227
|
requirement: !ruby/object:Gem::Requirement
|
228
228
|
requirements:
|
229
229
|
- - ">="
|
@@ -237,7 +237,7 @@ dependencies:
|
|
237
237
|
- !ruby/object:Gem::Version
|
238
238
|
version: '0'
|
239
239
|
- !ruby/object:Gem::Dependency
|
240
|
-
name:
|
240
|
+
name: httparty
|
241
241
|
requirement: !ruby/object:Gem::Requirement
|
242
242
|
requirements:
|
243
243
|
- - ">="
|
@@ -251,7 +251,7 @@ dependencies:
|
|
251
251
|
- !ruby/object:Gem::Version
|
252
252
|
version: '0'
|
253
253
|
- !ruby/object:Gem::Dependency
|
254
|
-
name:
|
254
|
+
name: activesupport
|
255
255
|
requirement: !ruby/object:Gem::Requirement
|
256
256
|
requirements:
|
257
257
|
- - ">="
|
@@ -265,7 +265,7 @@ dependencies:
|
|
265
265
|
- !ruby/object:Gem::Version
|
266
266
|
version: '0'
|
267
267
|
- !ruby/object:Gem::Dependency
|
268
|
-
name:
|
268
|
+
name: faraday
|
269
269
|
requirement: !ruby/object:Gem::Requirement
|
270
270
|
requirements:
|
271
271
|
- - ">="
|
@@ -279,7 +279,63 @@ dependencies:
|
|
279
279
|
- !ruby/object:Gem::Version
|
280
280
|
version: '0'
|
281
281
|
- !ruby/object:Gem::Dependency
|
282
|
-
name:
|
282
|
+
name: faraday-http-cache
|
283
|
+
requirement: !ruby/object:Gem::Requirement
|
284
|
+
requirements:
|
285
|
+
- - ">="
|
286
|
+
- !ruby/object:Gem::Version
|
287
|
+
version: '0'
|
288
|
+
type: :runtime
|
289
|
+
prerelease: false
|
290
|
+
version_requirements: !ruby/object:Gem::Requirement
|
291
|
+
requirements:
|
292
|
+
- - ">="
|
293
|
+
- !ruby/object:Gem::Version
|
294
|
+
version: '0'
|
295
|
+
- !ruby/object:Gem::Dependency
|
296
|
+
name: faraday-request-timer
|
297
|
+
requirement: !ruby/object:Gem::Requirement
|
298
|
+
requirements:
|
299
|
+
- - ">="
|
300
|
+
- !ruby/object:Gem::Version
|
301
|
+
version: '0'
|
302
|
+
type: :runtime
|
303
|
+
prerelease: false
|
304
|
+
version_requirements: !ruby/object:Gem::Requirement
|
305
|
+
requirements:
|
306
|
+
- - ">="
|
307
|
+
- !ruby/object:Gem::Version
|
308
|
+
version: '0'
|
309
|
+
- !ruby/object:Gem::Dependency
|
310
|
+
name: faraday_middleware
|
311
|
+
requirement: !ruby/object:Gem::Requirement
|
312
|
+
requirements:
|
313
|
+
- - ">="
|
314
|
+
- !ruby/object:Gem::Version
|
315
|
+
version: '0'
|
316
|
+
type: :runtime
|
317
|
+
prerelease: false
|
318
|
+
version_requirements: !ruby/object:Gem::Requirement
|
319
|
+
requirements:
|
320
|
+
- - ">="
|
321
|
+
- !ruby/object:Gem::Version
|
322
|
+
version: '0'
|
323
|
+
- !ruby/object:Gem::Dependency
|
324
|
+
name: faraday-cookie_jar
|
325
|
+
requirement: !ruby/object:Gem::Requirement
|
326
|
+
requirements:
|
327
|
+
- - ">="
|
328
|
+
- !ruby/object:Gem::Version
|
329
|
+
version: '0'
|
330
|
+
type: :runtime
|
331
|
+
prerelease: false
|
332
|
+
version_requirements: !ruby/object:Gem::Requirement
|
333
|
+
requirements:
|
334
|
+
- - ">="
|
335
|
+
- !ruby/object:Gem::Version
|
336
|
+
version: '0'
|
337
|
+
- !ruby/object:Gem::Dependency
|
338
|
+
name: faraday_connection_pool
|
283
339
|
requirement: !ruby/object:Gem::Requirement
|
284
340
|
requirements:
|
285
341
|
- - ">="
|
@@ -313,7 +369,8 @@ files:
|
|
313
369
|
- lib/wonko_the_sane/input/forgefiles_mods_input.rb
|
314
370
|
- lib/wonko_the_sane/input/jenkins_input.rb
|
315
371
|
- lib/wonko_the_sane/input/mojang_input.rb
|
316
|
-
- lib/wonko_the_sane/
|
372
|
+
- lib/wonko_the_sane/new_format.rb
|
373
|
+
- lib/wonko_the_sane/old_format.rb
|
317
374
|
- lib/wonko_the_sane/registry.rb
|
318
375
|
- lib/wonko_the_sane/rules.rb
|
319
376
|
- lib/wonko_the_sane/timestamps.rb
|
@@ -327,9 +384,9 @@ files:
|
|
327
384
|
- lib/wonko_the_sane/util/http_cache.rb
|
328
385
|
- lib/wonko_the_sane/util/maven_identifier.rb
|
329
386
|
- lib/wonko_the_sane/util/task_stack.rb
|
387
|
+
- lib/wonko_the_sane/util/version_parser.rb
|
330
388
|
- lib/wonko_the_sane/version.rb
|
331
389
|
- lib/wonko_the_sane/version_index.rb
|
332
|
-
- lib/wonko_the_sane/version_parser.rb
|
333
390
|
- lib/wonko_the_sane/versionlists/base_version_list.rb
|
334
391
|
- lib/wonko_the_sane/versionlists/curse_version_list.rb
|
335
392
|
- lib/wonko_the_sane/versionlists/forge_version_list.rb
|
@@ -339,7 +396,6 @@ files:
|
|
339
396
|
- lib/wonko_the_sane/versionlists/vanilla_legacy_version_list.rb
|
340
397
|
- lib/wonko_the_sane/versionlists/vanilla_version_list.rb
|
341
398
|
- lib/wonko_the_sane/wonko_version.rb
|
342
|
-
- lib/wonko_the_sane/wonkoweb_uploader.rb
|
343
399
|
homepage: https://github.com/MultiMC/WonkoTheSane
|
344
400
|
licenses:
|
345
401
|
- MIT
|
@@ -360,7 +416,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
360
416
|
version: '0'
|
361
417
|
requirements: []
|
362
418
|
rubyforge_project:
|
363
|
-
rubygems_version: 2.4.
|
419
|
+
rubygems_version: 2.4.8
|
364
420
|
signing_key:
|
365
421
|
specification_version: 4
|
366
422
|
summary: Pre-processing and format-unification of various resources mainly related
|
@@ -1,162 +0,0 @@
|
|
1
|
-
module WonkoTheSane
|
2
|
-
class WonkoWeb
|
3
|
-
include HTTParty
|
4
|
-
|
5
|
-
class UploadError < ResponseError
|
6
|
-
attr_reader :errors
|
7
|
-
|
8
|
-
def initialize(errors)
|
9
|
-
@errors = errors
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def initialize(benchmark)
|
14
|
-
self.class.base_uri Settings[:wonkoweb][:host]
|
15
|
-
self.class.headers 'X-Uploader-Name' => Settings[:wonkoweb][:name],
|
16
|
-
'X-Uploader-Token' => Settings[:wonkoweb][:token],
|
17
|
-
'X-WUR-Enabled' => 'true',
|
18
|
-
'Content-Type' => 'application/json'
|
19
|
-
|
20
|
-
@benchmark = benchmark
|
21
|
-
end
|
22
|
-
|
23
|
-
def index
|
24
|
-
self.class.get(path 'index').with_indifferent_access
|
25
|
-
end
|
26
|
-
|
27
|
-
def file(uid)
|
28
|
-
self.class.get(path uid).with_indifferent_access
|
29
|
-
end
|
30
|
-
|
31
|
-
def version(uid, version)
|
32
|
-
self.class.get(path uid, version).with_indifferent_access
|
33
|
-
end
|
34
|
-
|
35
|
-
def upload_file(data)
|
36
|
-
return if data.nil?
|
37
|
-
uid = data[:uid]
|
38
|
-
theirs = @benchmark.benchmark('upload_file.theirs') { file uid rescue nil }
|
39
|
-
|
40
|
-
data.delete :versions # only stubs here
|
41
|
-
data[:name] ||= data[:uid]
|
42
|
-
|
43
|
-
upload_hash path, path(uid), data, theirs, false
|
44
|
-
end
|
45
|
-
|
46
|
-
def upload_version(data)
|
47
|
-
return if data.nil?
|
48
|
-
uid = data[:uid]
|
49
|
-
version = data[:version]
|
50
|
-
theirs = @benchmark.benchmark('upload_version.theirs') { version uid, version rescue nil }
|
51
|
-
upload_hash path(uid), path(uid, version), data, theirs, true
|
52
|
-
end
|
53
|
-
|
54
|
-
private
|
55
|
-
|
56
|
-
def upload_hash(create_path, update_path, ours, theirs, allow_overwrite)
|
57
|
-
caller = ours[:version] ? 'upload_version' : 'upload_file'
|
58
|
-
res = if theirs.nil? || (theirs[:errors] && theirs[:errors].size > 0)
|
59
|
-
# upload entire file
|
60
|
-
@benchmark.benchmark(caller + '.create') { self.class.post create_path, body: JSON.generate(ours) }
|
61
|
-
else
|
62
|
-
# upload changes
|
63
|
-
|
64
|
-
body = JSON.parse JSON.generate ours # round-trip to "normalize" things
|
65
|
-
# keep_if modifies in-place (why isn't it named keep_if! ????????)
|
66
|
-
body.keep_if { |k, v| !(theirs[k.to_sym] == v) }
|
67
|
-
body.keep_if { |k, v| theirs[k.to_sym].nil? || theirs[k.to_sym].to_s.empty? } unless allow_overwrite
|
68
|
-
@benchmark.benchmark(caller + '.update') { self.class.patch update_path, body: JSON.generate(body) } unless body.empty?
|
69
|
-
end
|
70
|
-
|
71
|
-
if !res.nil? && (res.code >= 300 || JSON.parse(res.body).key?('errors'))
|
72
|
-
binding.pry
|
73
|
-
fail UploadError.new res.body[:errors]
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
def path(*args)
|
78
|
-
return '/api/v1.json' if args.nil? || args.empty?
|
79
|
-
'/api/v1/' + args.map(&:to_s).join('/') + '.json'
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
class WonkoWebUploader
|
84
|
-
def initialize
|
85
|
-
data = JSON.parse File.read 'uploader_queue.json' if File.exists? 'uploader_queue.json'
|
86
|
-
data ||= {}
|
87
|
-
data = data.with_indifferent_access
|
88
|
-
@changed_files = data[:files] || []
|
89
|
-
@changed_versions = data[:versions] || {}
|
90
|
-
|
91
|
-
@benchmark = WonkoTheSane::Util::Benchmark.new
|
92
|
-
@client = WonkoWeb.new @benchmark
|
93
|
-
end
|
94
|
-
|
95
|
-
def file_changed(uid)
|
96
|
-
@changed_files << uid
|
97
|
-
save_changes!
|
98
|
-
end
|
99
|
-
|
100
|
-
def version_changed(uid, version)
|
101
|
-
@changed_versions[uid] ||= []
|
102
|
-
@changed_versions[uid] << version
|
103
|
-
save_changes!
|
104
|
-
end
|
105
|
-
|
106
|
-
def upload_changes!
|
107
|
-
@changed_files.uniq!
|
108
|
-
return if Settings[:wonkoweb][:host].nil?
|
109
|
-
|
110
|
-
existing_uids = @benchmark.benchmark('initial index') { @client.index }[:index].map { |obj| obj[:uid] }
|
111
|
-
logger.info "Uploading #{@changed_files.size} changed files to WonkoWeb at #{Settings[:wonkoweb][:host]}..."
|
112
|
-
@changed_files.dup.each do |uid|
|
113
|
-
begin
|
114
|
-
@client.upload_file $rw.write_version_index Registry.instance.version_index uid
|
115
|
-
existing_uids << uid
|
116
|
-
@changed_files.delete uid
|
117
|
-
rescue => e
|
118
|
-
logger.error "Unable to upload file for #{uid} to WonkoWeb: #{e.message}"
|
119
|
-
logger.warn e.backtrace.first
|
120
|
-
binding.pry if $stdout.isatty && ENV['DEBUG_ON_ERROR']
|
121
|
-
end
|
122
|
-
end
|
123
|
-
logger.info 'Done.'
|
124
|
-
@benchmark.print_times true
|
125
|
-
|
126
|
-
num_versions = @changed_versions.collect { |k, v| v.size }.inject :+
|
127
|
-
logger.info "Uploading #{num_versions} changed versions to WonkoWeb at #{Settings[:wonkoweb][:host]}..."
|
128
|
-
@changed_versions.dup.each do |uid, versions|
|
129
|
-
versions.dup.each do |version|
|
130
|
-
begin
|
131
|
-
@client.upload_file $rw.write_version_index Registry.instance.version_index uid unless existing_uids.include? uid
|
132
|
-
@client.upload_version $rw.write_version Registry.instance.retrieve uid, version
|
133
|
-
versions.delete version
|
134
|
-
rescue => e
|
135
|
-
logger.error "Unable to upload version #{version} of #{uid} to WonkoWeb: #{e.message}"
|
136
|
-
logger.warn e.backtrace.first
|
137
|
-
binding.pry if $stdout.isatty && ENV['DEBUG_ON_ERROR']
|
138
|
-
end
|
139
|
-
@changed_versions.delete uid if versions.empty?
|
140
|
-
end
|
141
|
-
end
|
142
|
-
logger.info 'Done.'
|
143
|
-
@benchmark.print_times true
|
144
|
-
|
145
|
-
save_changes!
|
146
|
-
end
|
147
|
-
|
148
|
-
private
|
149
|
-
|
150
|
-
def logger
|
151
|
-
Logging.logger[self]
|
152
|
-
end
|
153
|
-
|
154
|
-
def save_changes!
|
155
|
-
data = {
|
156
|
-
files: @changed_files,
|
157
|
-
versions: @changed_versions
|
158
|
-
}
|
159
|
-
File.write 'uploader_queue.json', JSON.pretty_generate(data)
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|