wonko_the_sane 0.1.2 → 0.1.4
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/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
|