wonko_the_sane 0.1.1

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.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/bin/wonko_the_sane +91 -0
  3. data/data/minecraft.json +668 -0
  4. data/data/mods.json +2475 -0
  5. data/data/sources.json +427 -0
  6. data/data/timestamps.json +13 -0
  7. data/lib/wonko_the_sane.rb +66 -0
  8. data/lib/wonko_the_sane/input/base_input.rb +55 -0
  9. data/lib/wonko_the_sane/input/forge_installer_profile_input.rb +134 -0
  10. data/lib/wonko_the_sane/input/forgefiles_mods_input.rb +30 -0
  11. data/lib/wonko_the_sane/input/jenkins_input.rb +46 -0
  12. data/lib/wonko_the_sane/input/mojang_input.rb +214 -0
  13. data/lib/wonko_the_sane/reader_writer.rb +163 -0
  14. data/lib/wonko_the_sane/registry.rb +61 -0
  15. data/lib/wonko_the_sane/rules.rb +69 -0
  16. data/lib/wonko_the_sane/timestamps.rb +30 -0
  17. data/lib/wonko_the_sane/tools/update_nem.rb +85 -0
  18. data/lib/wonko_the_sane/util/configuration.rb +35 -0
  19. data/lib/wonko_the_sane/util/deep_storage_cache.rb +65 -0
  20. data/lib/wonko_the_sane/util/extraction_cache.rb +30 -0
  21. data/lib/wonko_the_sane/util/file_hash_cache.rb +42 -0
  22. data/lib/wonko_the_sane/util/http_cache.rb +143 -0
  23. data/lib/wonko_the_sane/util/maven_identifier.rb +39 -0
  24. data/lib/wonko_the_sane/util/task_stack.rb +21 -0
  25. data/lib/wonko_the_sane/version.rb +3 -0
  26. data/lib/wonko_the_sane/version_index.rb +33 -0
  27. data/lib/wonko_the_sane/version_parser.rb +115 -0
  28. data/lib/wonko_the_sane/versionlists/base_version_list.rb +103 -0
  29. data/lib/wonko_the_sane/versionlists/curse_version_list.rb +52 -0
  30. data/lib/wonko_the_sane/versionlists/forge_version_list.rb +142 -0
  31. data/lib/wonko_the_sane/versionlists/forgefiles_mods_list.rb +24 -0
  32. data/lib/wonko_the_sane/versionlists/jenkins_version_list.rb +29 -0
  33. data/lib/wonko_the_sane/versionlists/liteloader_version_list.rb +66 -0
  34. data/lib/wonko_the_sane/versionlists/vanilla_legacy_version_list.rb +39 -0
  35. data/lib/wonko_the_sane/versionlists/vanilla_version_list.rb +35 -0
  36. data/lib/wonko_the_sane/wonko_version.rb +184 -0
  37. metadata +324 -0
@@ -0,0 +1,35 @@
1
+ require_relative 'base_version_list'
2
+ require 'date'
3
+
4
+ class VanillaVersionList < BaseVersionList
5
+ def initialize
6
+ super('net.minecraft')
7
+ @input = MojangInput.new('net.minecraft')
8
+ end
9
+
10
+ def get_versions
11
+ result = get_json 'http://s3.amazonaws.com/Minecraft.Download/versions/versions.json'
12
+ @latest_release = result[:latest][:release]
13
+ @latest_snapshot = result[:latest][:snapshot]
14
+
15
+ return result[:versions].map do |obj| obj[:id] end
16
+ end
17
+
18
+ def get_version(id)
19
+ url = 'http://s3.amazonaws.com/Minecraft.Download/versions/' + id + '/' + id + '.json'
20
+ json = if @latest_release == id || @latest_snapshot == id
21
+ get_json url
22
+ else
23
+ get_json_cached url
24
+ end
25
+ files = @input.parse json
26
+ mcfile = files.find do |file|
27
+ file.uid == 'net.minecraft'
28
+ end
29
+ if mcfile and mcfile.time > DateTime.iso8601('2013-06-25T15:08:56+02:00').to_time.to_i
30
+ files
31
+ else
32
+ []
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,184 @@
1
+ class Download
2
+ attr_accessor :internalUrl # not serialized, used for DownloadsFixer when the url isn't direct (requires user interaction)
3
+ attr_accessor :url
4
+ attr_accessor :size
5
+ attr_accessor :sha256
6
+ attr_accessor :rules # [Rule]
7
+
8
+ def type
9
+ 'general.downloads'
10
+ end
11
+
12
+ def to_json
13
+ obj = {
14
+ url: url,
15
+ size: @size,
16
+ sha256: @sha256
17
+ }
18
+ obj[:rules] = @rules.map do |rule| rule.to_json end if @rules and not @rules.empty?
19
+ return obj
20
+ end
21
+
22
+ def from_json(json)
23
+ @url = json[:url]
24
+ @size = json[:size]
25
+ @sha256 = json[:sha256]
26
+ @rules = json[:rules].map do |obj| Rule.from_json obj end if json[:rules]
27
+ end
28
+
29
+ def self.from_json(type, json)
30
+ dl = nil
31
+ case type
32
+ when 'java.libraries'
33
+ dl = VersionLibrary.new
34
+ when 'java.natives'
35
+ dl = VersionLibraryNative.new
36
+ when 'general.downloads'
37
+ dl = FileDownload.new
38
+ end
39
+
40
+ dl.from_json json
41
+ return dl
42
+ end
43
+ end
44
+
45
+ class FileDownload < Download
46
+ attr_accessor :destination
47
+
48
+ def initialize(url = nil, destination = nil)
49
+ @url = url
50
+ @destination = destination
51
+ end
52
+
53
+ def to_json
54
+ obj = super
55
+ obj[:destination] = @destination
56
+ obj
57
+ end
58
+
59
+ def from_json(json)
60
+ super
61
+ @destination = json[:destination]
62
+ end
63
+ end
64
+
65
+ class VersionLibrary < Download
66
+ attr_accessor :name
67
+ attr_accessor :mavenBaseUrl
68
+
69
+ def type
70
+ 'java.libraries'
71
+ end
72
+ def url
73
+ @url ? @url : (@mavenBaseUrl + WonkoTheSane::Util::MavenIdentifier.new(@name).to_path)
74
+ end
75
+
76
+ def maven
77
+ WonkoTheSane::Util::MavenIdentifier.new @name
78
+ end
79
+
80
+ def to_json
81
+ obj = super
82
+ obj[:name] = @name
83
+ obj[:mavenBaseUrl] = @mavenBaseUrl if @mavenBaseUrl
84
+
85
+ if not @url
86
+ obj.delete :url
87
+ end
88
+
89
+ obj
90
+ end
91
+
92
+ def from_json(json)
93
+ super
94
+ @name = json[:name]
95
+ @mavenBaseUrl = json[:mavenBaseUrl]
96
+
97
+ # if the absolute url is equal to the expected maven url we clear the absolute url
98
+ if @url == url
99
+ @url = nil
100
+ end
101
+ end
102
+ end
103
+
104
+ class VersionLibraryNative < VersionLibrary
105
+ def type
106
+ 'java.natives'
107
+ end
108
+ end
109
+
110
+ class Jarmod < VersionLibrary
111
+ def type
112
+ 'mc.jarmod'
113
+ end
114
+ end
115
+
116
+ class Referenced
117
+ attr_accessor :uid
118
+ attr_accessor :version
119
+
120
+ def initialize(uid, version = nil)
121
+ @uid = uid
122
+ @version = version
123
+ end
124
+
125
+ def ==(other)
126
+ @uid == other.uid and @version == other.version
127
+ end
128
+ end
129
+
130
+ class WonkoVersion
131
+ attr_accessor :uid
132
+ attr_accessor :version
133
+ attr_reader :time # unix timestamp
134
+ attr_accessor :type
135
+ attr_accessor :is_complete
136
+
137
+ attr_accessor :requires # list of Referenced
138
+
139
+ class Resources
140
+ attr_accessor :traits
141
+ attr_accessor :launchMethod
142
+
143
+ # resources
144
+ attr_accessor :mainClass
145
+ attr_accessor :appletClass
146
+ attr_accessor :assets
147
+ attr_accessor :minecraftArguments
148
+ attr_accessor :tweakers
149
+ attr_accessor :jarModTarget
150
+ attr_accessor :folders # Path => [Type]
151
+ attr_accessor :downloads # [Download]
152
+
153
+ # for communication between sanitizers, parsers etc.
154
+ attr_accessor :extra
155
+
156
+ def initialize
157
+ @extra = {}
158
+ @folders = {}
159
+ @downloads = []
160
+ end
161
+ end
162
+
163
+ attr_reader :client
164
+ attr_reader :server
165
+ attr_reader :common
166
+
167
+ def initialize
168
+ @requires = []
169
+ @client = Resources.new
170
+ @server = Resources.new
171
+ @common = Resources.new
172
+ end
173
+
174
+ def time=(time)
175
+ @time = Timestamps.get @uid, @version, time
176
+ end
177
+
178
+ def local_filename
179
+ WonkoVersion.local_filename @uid, @version
180
+ end
181
+ def self.local_filename(uid, version)
182
+ 'files/' + uid + '/' + version + '.json'
183
+ end
184
+ end
metadata ADDED
@@ -0,0 +1,324 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wonko_the_sane
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - 02JanDal
8
+ - robotbrain
9
+ - peterix
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2015-05-17 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.9'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.9'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '10.0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '10.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: pry
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: pry-nav
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: pry-stack_explorer
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: pry-rescue
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ - !ruby/object:Gem::Dependency
114
+ name: guard
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ - !ruby/object:Gem::Dependency
128
+ name: guard-bundler
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: guard-shell
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: rubyzip
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ type: :runtime
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ - !ruby/object:Gem::Dependency
170
+ name: hashie
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ type: :runtime
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ - !ruby/object:Gem::Dependency
184
+ name: yajl-ruby
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ type: :runtime
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ - !ruby/object:Gem::Dependency
198
+ name: colorize
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ type: :runtime
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ - !ruby/object:Gem::Dependency
212
+ name: oga
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ type: :runtime
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ">="
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ - !ruby/object:Gem::Dependency
226
+ name: logging
227
+ requirement: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - ">="
230
+ - !ruby/object:Gem::Version
231
+ version: '0'
232
+ type: :runtime
233
+ prerelease: false
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ - !ruby/object:Gem::Dependency
240
+ name: aws-sdk
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :runtime
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
253
+ description:
254
+ email:
255
+ - jan@dalheimer.de
256
+ - robotbrain@robotbrain.info
257
+ - peterix@gmail.com
258
+ executables:
259
+ - wonko_the_sane
260
+ extensions: []
261
+ extra_rdoc_files: []
262
+ files:
263
+ - bin/wonko_the_sane
264
+ - data/minecraft.json
265
+ - data/mods.json
266
+ - data/sources.json
267
+ - data/timestamps.json
268
+ - lib/wonko_the_sane.rb
269
+ - lib/wonko_the_sane/input/base_input.rb
270
+ - lib/wonko_the_sane/input/forge_installer_profile_input.rb
271
+ - lib/wonko_the_sane/input/forgefiles_mods_input.rb
272
+ - lib/wonko_the_sane/input/jenkins_input.rb
273
+ - lib/wonko_the_sane/input/mojang_input.rb
274
+ - lib/wonko_the_sane/reader_writer.rb
275
+ - lib/wonko_the_sane/registry.rb
276
+ - lib/wonko_the_sane/rules.rb
277
+ - lib/wonko_the_sane/timestamps.rb
278
+ - lib/wonko_the_sane/tools/update_nem.rb
279
+ - lib/wonko_the_sane/util/configuration.rb
280
+ - lib/wonko_the_sane/util/deep_storage_cache.rb
281
+ - lib/wonko_the_sane/util/extraction_cache.rb
282
+ - lib/wonko_the_sane/util/file_hash_cache.rb
283
+ - lib/wonko_the_sane/util/http_cache.rb
284
+ - lib/wonko_the_sane/util/maven_identifier.rb
285
+ - lib/wonko_the_sane/util/task_stack.rb
286
+ - lib/wonko_the_sane/version.rb
287
+ - lib/wonko_the_sane/version_index.rb
288
+ - lib/wonko_the_sane/version_parser.rb
289
+ - lib/wonko_the_sane/versionlists/base_version_list.rb
290
+ - lib/wonko_the_sane/versionlists/curse_version_list.rb
291
+ - lib/wonko_the_sane/versionlists/forge_version_list.rb
292
+ - lib/wonko_the_sane/versionlists/forgefiles_mods_list.rb
293
+ - lib/wonko_the_sane/versionlists/jenkins_version_list.rb
294
+ - lib/wonko_the_sane/versionlists/liteloader_version_list.rb
295
+ - lib/wonko_the_sane/versionlists/vanilla_legacy_version_list.rb
296
+ - lib/wonko_the_sane/versionlists/vanilla_version_list.rb
297
+ - lib/wonko_the_sane/wonko_version.rb
298
+ homepage: https://github.com/MultiMC/WonkoTheSane
299
+ licenses:
300
+ - MIT
301
+ metadata: {}
302
+ post_install_message:
303
+ rdoc_options: []
304
+ require_paths:
305
+ - lib
306
+ required_ruby_version: !ruby/object:Gem::Requirement
307
+ requirements:
308
+ - - ">="
309
+ - !ruby/object:Gem::Version
310
+ version: '0'
311
+ required_rubygems_version: !ruby/object:Gem::Requirement
312
+ requirements:
313
+ - - ">="
314
+ - !ruby/object:Gem::Version
315
+ version: '0'
316
+ requirements: []
317
+ rubyforge_project:
318
+ rubygems_version: 2.4.6
319
+ signing_key:
320
+ specification_version: 4
321
+ summary: Pre-processing and format-unification of various resources mainly related
322
+ to Minecraft
323
+ test_files: []
324
+ has_rdoc: