sixarma-bt 0.7.4 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -5,4 +5,7 @@ Documentation:
5
5
  - If the most recent version is tagged as released: false,
6
6
  the next time you run the program it will assume that this will be the version to work with.
7
7
  If released: true, then it will assume you intend to create the next version.
8
- - run bt-cli -? for help
8
+ - run bt-cli -? for help
9
+
10
+ - If you need to change the default settings of sixarma/sixcore modules, please copy their config yaml files into
11
+ PROGRAM_FOLDER\config and adjust them as you wish.
data/Rakefile CHANGED
@@ -13,7 +13,7 @@ require 'rake/testtask'
13
13
  spec = Gem::Specification.new do |s|
14
14
  s.name = 'sixarma-bt'
15
15
  s.rubyforge_project = s.name
16
- s.version = '0.7.4'
16
+ s.version = '0.8.0'
17
17
  s.has_rdoc = true
18
18
  s.extra_rdoc_files = ['README', 'LICENSE']
19
19
  s.summary = 'BuildTools for full conversion Mods for Armed Assault'
@@ -25,8 +25,8 @@ spec = Gem::Specification.new do |s|
25
25
  s.files = %w(LICENSE README Rakefile) + Dir.glob("{bin,lib,spec}/**/*.rb") + Dir.glob("{bin,lib,spec}/**/*.yaml")
26
26
  s.require_path = 'lib'
27
27
  s.bindir = 'bin'
28
- s.add_dependency('sixarma', '>= 0.4.0')
29
- s.add_dependency('sixcore', '>= 0.3.0')
28
+ s.add_dependency('sixarma', '>= 0.5.0')
29
+ s.add_dependency('sixcore', '>= 0.4.0')
30
30
  end
31
31
 
32
32
  Rake::GemPackageTask.new(spec) do |p|
@@ -15,6 +15,4 @@ builder = SixArma::Bt::Builder.new(
15
15
  )
16
16
 
17
17
  SixCore::log.debug @options.todo
18
- @options.todo.each do |t|
19
- eval "builder.#{t}"
20
- end
18
+ @options.todo.each do |t| eval "builder.#{t}" end
@@ -2,11 +2,8 @@
2
2
  6thSense.eu ArmA BuildTools (Automation Suite), by Sickboy (sb_at_6thSense.eu)
3
3
 
4
4
  # TODO: Tweak / Clean / Merge / Split / Optimize
5
- # TODO: log4r support per module instead of all in core?
6
5
  # TODO: Implement FATAL, WARN etc loglevels?
7
6
  # TODO: Convert all Config/Stats classes from CON_STANT to ConStant variation
8
- # TODO: Move Regex into Constants
9
- # FIXME: Look at Keys Cleaning for 'whole' processing
10
7
  # TODO: List:
11
8
  - More sophisticated svn changes system which goes beyond 'Addons' and 'Dta' etc
12
9
  -- CONFIG_MOD_SUBFOLDERS per mod implemented, but only active for creating addons and signing
@@ -39,6 +36,10 @@ require 'sixarma/bt/sign'
39
36
  module SixArma
40
37
  # Build Tools Module
41
38
  module Bt
39
+ COMPONENT = 'SixArma::Bt::Builder'
40
+ TITLE = '6thSense.eu ArmA BuildTools'
41
+ VERSION = '0.8.0'
42
+
42
43
  # Main Config Structure
43
44
  CONFIG = Struct.new(:title, :titlelong, :outroot, :verpath, :veraddon, :changelog, :workdir, :workbin, :workpbo, :work3rd, :work3rd_pbo,
44
45
  :workdel, :listbin, :listpbo, :list3rd_pbo, :sign, :nsis, :ftp, :mods)
@@ -67,46 +68,67 @@ module SixArma
67
68
  # Changelog Structure
68
69
  STATS_MOD_CHANGELOG = Struct.new(:added, :updated, :removed, :changed, :fixed, :local)
69
70
 
70
- COMMENT_TYPES = [
71
- 'CHANGED', 'CHANGE', 'C', 'MODIFIED', 'MOD',
72
- 'ADDED', 'ADD', 'A',
73
- 'FIXED', 'FIX', 'F',
74
- 'UPDATED', 'UPDATE', 'UPD', 'U',
75
- 'DELETED', 'DELETE', 'DEL', 'REMOVED',
76
- 'LOCAL', 'MOVED', 'MOV', 'REVERTED', 'RENAMED', 'R']
77
-
78
- # Log entries class
79
- class LogEntries < Array
80
- def add_entries(array, type)
81
- unless array.empty?
82
- push "** #{type}:"
83
- array.each do |e|
84
- push "*** #{e}"
85
- end
86
- push ''
87
- end
88
- end
71
+ @@log = Log4r::Logger.new('SixCore::SixArma-Bt')
72
+ module_function
73
+ def log
74
+ @@log
89
75
  end
76
+
90
77
  # Main Program Class
91
78
  class Builder
92
79
  COMPONENT = 'SixArma::Bt::Builder'
93
80
 
81
+ TYPE_PATTERN = [
82
+ 'CHANGED', 'CHANGE', 'C', 'MODIFIED', 'MOD',
83
+ 'ADDED', 'ADD', 'A',
84
+ 'FIXED', 'FIX', 'F',
85
+ 'UPDATED', 'UPDATE', 'UPD', 'U',
86
+ 'DELETED', 'DELETE', 'DEL', 'REMOVED',
87
+ 'LOCAL', 'MOVED', 'MOV', 'REVERTED', 'RENAMED', 'R'].join '|'
88
+
89
+ REGEX_DEVS = /ace_dev_|ace_support_|wgl_support_|wgl_dev_|wgl_supporter_/i
90
+ REGEX_LONG = /^\s*~?\s*(#{TYPE_PATTERN})\s+-\s*((\w+)(\s*(and|&)\s*(\w+))?(\s*(and|&)\s*(\w+))?):?\s*(.+?)\s*$/i
91
+ REGEX_PLACE = /^\s*~?\s*(#{TYPE_PATTERN})\s+(\w+_\w+):\s*(.+?)\s*$/i
92
+ REGEX_TYPE1 = /^\s*~?\s*(#{TYPE_PATTERN})\s*?[\s:]\s*(.+?)\s*$/i
93
+ REGEX_TYPE2 = /^\s*~?\s*(#{TYPE_PATTERN})\s+(.+?)\s*$/i
94
+ REGEX_COMMENT1 = /^\s*~\s*(.*?)\s*$/
95
+ REGEX_COMMENT2 = /^\s*(.*?)\s*$/
96
+ REGEX_LOCAL = /version tag|buildscripts?|build[_\s+]|readme|credits|\.txt|\.bat|changelog| txt |this/i
97
+ REGEX_NOGO = /penis|dildo|noob/i
98
+ REGEX_NIL = /^\s*([:\-\.~,]|\**)\s*/
99
+ REGEX_FIRST = /^\w+/
100
+
101
+ REGEX_TODO = /TODO|RESTORED/i
102
+ REGEX_CHANGED = /^CH?A?N?G?E?D?/i
103
+ REGEX_MODIFIED = /^MODIFIED|MOD|RENAMED/i
104
+ REGEX_ADDED = /^AD?D?E?D?/i
105
+ REGEX_REMOVED = /^RE?M?O?V?E?D/i
106
+ REGEX_DELETED = /^DELE?T?E?D?/i
107
+ REGEX_UPDATED = /^UP?D?A?T?E?D?/i
108
+ REGEX_FIXED = /^FI?X?E?D?/i
109
+ REGEX_MOVED = /^MOVE?D?/i
110
+ REGEX_REVERT = /^LOCAL|REVERTE?D?/i
111
+
112
+ REGEX_VERSION = /(.)\.(.)(.)/
113
+
114
+ @@log = SixArma::Bt.log
115
+
94
116
  attr_reader(:config, :stats)
95
117
  attr_accessor :threads
96
118
 
97
119
  # yaml:: Yaml configuration file
98
120
  # halt:: Wait for user input every step?
99
121
  def initialize(yaml, halt)
100
- SixCore::info "Start Time: #{Time.now}"
122
+ @@log.info "Start Time: #{Time.now}"
101
123
 
102
124
  @halt = halt
103
125
  @threads = []
104
126
  @stats = STATS.new()
105
127
  if FileTest.exist?(yaml)
106
- SixCore::info "Reading From Configuration File: #{yaml}"
128
+ @@log.info "Reading From Configuration File: #{yaml}"
107
129
  File.open(yaml) { |yf| @config = YAML::load( yf ) }
108
130
  else
109
- SixCore::info "Yaml file not found (#{yaml})"
131
+ @@log.info "Yaml file not found (#{yaml})"
110
132
  Process.exit
111
133
  end
112
134
  read_stats()
@@ -117,11 +139,11 @@ module SixArma
117
139
  # source:: Source path
118
140
  # destination:: Destination path
119
141
  def update_all(source, destination)
120
- SixCore::infos('Update_All', COMPONENT) # TODO
121
- SixCore::info "Updating *all* files - source: #{source} - destination: #{destination}..."
142
+ @@log.info SixCore::prep_msg('Update_All', :format => 'title') # TODO
143
+ @@log.info "Updating *all* files - source: #{source} - destination: #{destination}..."
122
144
  SixCore::fileupdate(
123
- "#{@config.outroot}\\files\\#{source}\\",
124
- "#{@config.outroot}\\files\\#{destination}\\"
145
+ "#{@config.outroot}/files/#{source}/",
146
+ "#{@config.outroot}/files/#{destination}/"
125
147
  )
126
148
  end
127
149
 
@@ -129,11 +151,11 @@ module SixArma
129
151
  # source:: Source path
130
152
  # destination:: Destination path
131
153
  def update_sign(source, destination)
132
- SixCore::infos('Update_Sign', COMPONENT) # TODO
133
- SixCore::info "Updating *sign* files - source: #{source} - destination: #{destination}..."
154
+ @@log.info SixCore::prep_msg('Update_Sign', :format => 'title') # TODO
155
+ @@log.info "Updating *sign* files - source: #{source} - destination: #{destination}..."
134
156
  SixCore::fileupdate(
135
- "#{@config.outroot}\\files\\#{source}\\",
136
- "#{@config.outroot}\\files\\#{destination}\\",
157
+ "#{@config.outroot}/files/#{source}/",
158
+ "#{@config.outroot}/files/#{destination}/",
137
159
  '/IF *.bisign *.bikey'
138
160
  )
139
161
  end
@@ -157,15 +179,15 @@ module SixArma
157
179
  # put:: File to upload
158
180
  # type:: Type (update or full)
159
181
  def upload(put, type, tmp = true)
160
- SixCore::infos('Upload', COMPONENT)
182
+ @@log.info SixCore::prep_msg('Upload', :format => 'title')
161
183
  @config.ftp.each do |f|
162
184
  path = eval "f.path#{type}"
163
- SixCore::info "Uploading #{put} to #{f.host}/#{path}..."
185
+ @@log.info "Uploading #{put} to #{f.host}/#{path}..."
164
186
  ftp = SixCore::Ftp.new(f.host, f.user, f.pass)
165
- ftp.put(put, "#{@config.outroot}\\", path, true, tmp)
187
+ ftp.put(put, "#{@config.outroot}/", path, true, tmp)
166
188
  ftp.ftp.close
167
189
  end
168
- SixCore::info "Uploading #{put} finished!"
190
+ @@log.info "Uploading #{put} finished!"
169
191
  SixCore::halt() if @halt
170
192
  end
171
193
 
@@ -175,19 +197,19 @@ module SixArma
175
197
  name = eval("@stats.#{type}file")
176
198
  tmp = []
177
199
  @config.ftp.each do |f|
178
- tmp << [f.host, f.user, f.pass, eval("f.path#{type}"), "#{@config.outroot}\\", name]
200
+ tmp << [f.host, f.user, f.pass, eval("f.path#{type}"), "#{@config.outroot}/", name]
179
201
  end
180
202
  @threads << Thread.new(tmp,name) do |ftps,name|
181
- SixCore::infos('Upload', COMPONENT)
182
- SixCore::info "Uploading #{name}..."
203
+ @@log.info SixCore::prep_msg('Upload', :format => 'title')
204
+ @@log.info "Uploading #{name}..."
183
205
  ftps.each { |f| upload_raw(*f) }
184
- SixCore::info "Uploading #{name} finished..."
206
+ @@log.info "Uploading #{name} finished..."
185
207
  end
186
208
  end
187
209
 
188
210
  # Releases uploaded update/full setup files
189
211
  def release()
190
- SixCore::info "Releasing #{@stats.newver}..."
212
+ @@log.info "Releasing #{@stats.newver}..."
191
213
  @config.ftp.each do |f|
192
214
  begin
193
215
  raise 'Error' if @stats.fullfile.nil? && @stats.updatefile.nil?
@@ -204,7 +226,7 @@ module SixArma
204
226
  end
205
227
  end
206
228
  @stats.released = true
207
- SixCore::info "Version Info: #{@stats.newver} Released!"
229
+ @@log.info "Version Info: #{@stats.newver} Released!"
208
230
 
209
231
  write_stats()
210
232
  end
@@ -212,14 +234,14 @@ module SixArma
212
234
  # Reads stats from yaml version file
213
235
  def read_stats()
214
236
  # TODO: Prettify
215
- dir = Dir.open("#{@config.outroot}/versions").entries
216
- if dir.size > 2
237
+ dir = Dir["#{@config.outroot}/versions/*.yaml"]
238
+ if dir.size > 0
217
239
  dir.reverse!
218
- File.open("#{@config.outroot}/versions/#{dir[0]}") do |yf|
219
- SixCore::info "Reading From Stats File: #{dir[0]}"
240
+ File.open(dir[0]) do |yf|
241
+ @@log.info "Reading From Stats File: #{dir[0]}"
220
242
  stats = YAML::load(yf)
221
243
  if stats.released
222
- SixCore::info 'Previous version was released; New Version'
244
+ @@log.info 'Previous version was released; New Version'
223
245
  @stats = STATS.new()
224
246
  @stats.mods = []
225
247
  @stats.oldver = stats.newver.to_s
@@ -228,8 +250,8 @@ module SixArma
228
250
  # TODO: Prettify??
229
251
  @stats.newver << '0' # always append extra 0 due to floating point 0.50 --> 0.5
230
252
  @stats.oldver << '0' # always append extra 0 due to floating point 0.50 --> 0.5
231
- @stats.newver = /(.)\.(.)(.)/.match(@stats.newver).to_s
232
- @stats.oldver = /(.)\.(.)(.)/.match(@stats.oldver).to_s
253
+ @stats.newver = @stats.newver[REGEX_VERSION].to_s
254
+ @stats.oldver = @stats.oldver[REGEX_VERSION].to_s
233
255
 
234
256
  @stats.released = false
235
257
  stats.mods.each do |mod|
@@ -237,16 +259,14 @@ module SixArma
237
259
  modstats.subfolders = []
238
260
  mod.subfolders.each do
239
261
  sf = STATS_MOD_SUBFOLDERS.new()
240
- sf.add = []
241
- sf.del = []
242
- sf.change = []
262
+ sf.add, sf.del, sf.change = [], [], []
243
263
  modstats.subfolders << sf
244
264
  end
245
265
  modstats.oldrev = mod.newrev
246
266
  @stats.mods << modstats
247
267
  end
248
268
  else
249
- SixCore::info 'Previous version wasn\'t released; Sticking to current version'
269
+ @@log.info 'Previous version wasn\'t released; Sticking to current version'
250
270
  @stats = stats
251
271
  end
252
272
  end
@@ -255,10 +275,10 @@ module SixArma
255
275
  Process.exit
256
276
  end
257
277
 
258
- SixCore::info "Current Version: #{@stats.newver} | Previous Version: #{@stats.oldver}"
278
+ @@log.info "Current Version: #{@stats.newver} | Previous Version: #{@stats.oldver}"
259
279
 
260
280
  # update the version files
261
- SixCore::info 'Updating version.txt...'
281
+ @@log.info 'Updating version.txt...'
262
282
  # used by updater setup program
263
283
  File.open("#{@config.outroot}/files/update/#{@config.mods[0].destination}/#{@config.verpath}/version.txt", 'w') do |f|
264
284
  f << @stats.newver
@@ -285,20 +305,19 @@ module SixArma
285
305
  write_stats()
286
306
 
287
307
  # Write all in one changelog all versions and mods
308
+ @@log.info SixCore::prep_msg 'Writing Changelog', :format => 'title'
288
309
  write_changelog2()
289
- SixCore::infos 'Latest Commits by:'
310
+ @@log.info 'Latest Commits by:'
290
311
  @names.each do |k, v|
291
- SixCore::info "#{k}: #{v} commits"
312
+ @@log.info "#{k}: #{v} commits"
292
313
  end
293
314
  end
294
315
 
295
316
  # Experimental: "Replay SVN Log and Reimport"
296
317
  def tmp
297
- Dir.chdir("#{@config.outroot}/versions")
298
-
299
- Dir.glob('*.yaml') do |f|
300
- File.open("#{@config.outroot}/versions/#{f}") do |yf|
301
- SixCore::info "Reading From Stats File: #{f}"
318
+ Dir["#{@config.outroot}/versions/*.yaml"].each do |f|
319
+ File.open(f) do |yf|
320
+ @@log.info "Reading From Stats File: #{f}"
302
321
  @stats = YAML::load(yf)
303
322
  read_changelog(false)
304
323
  write_stats()
@@ -309,12 +328,8 @@ module SixArma
309
328
  def read_changelog(readrev = true)
310
329
  @stats.mods.each_with_index do |mod, idx|
311
330
  mod.changelog = STATS_MOD_CHANGELOG.new()
312
- mod.changelog.changed = []
313
- mod.changelog.removed = []
314
- mod.changelog.fixed = []
315
- mod.changelog.added = []
316
- mod.changelog.updated = []
317
- mod.changelog.local = []
331
+ mod.changelog.changed, mod.changelog.removed, mod.changelog.fixed = [], [], []
332
+ mod.changelog.added, mod.changelog.updated, mod.changelog.local = [], [], []
318
333
  mod2 = @config.mods[idx]
319
334
  unless mod2.svn.nil?
320
335
  svn = SixCore::Svn.new("#{mod2.path}#{mod2.source}", mod2.svn.user, mod2.svn.pass)
@@ -325,14 +340,13 @@ module SixArma
325
340
  if l[1].size > 0
326
341
  # TODO Pretify
327
342
  name = l[0][1]
328
- name.gsub!(/ace_dev_|ace_support_|wgl_support_|wgl_dev_|wgl_supporter_/i, '')
343
+ name.gsub!(REGEX_DEVS, '')
329
344
  name.capitalize!
330
- @names[name] =+ 1
331
- type_pattern = COMMENT_TYPES.join '|'
345
+ @names[name] += 1
332
346
  l[1].each do |c|
333
347
  if true #c =~ /^\s*~\s*/
334
348
  is_valid, type, places, comment = case c
335
- when /^\s*~?\s*(#{type_pattern})\s+-\s*((\w+)(\s*(and|&)\s*(\w+))?(\s*(and|&)\s*(\w+))?):?\s*(.+?)\s*$/i
349
+ when REGEX_LONG
336
350
  # ~ type - place: comment
337
351
  # ~ type - place comment
338
352
  # ~ type - place
@@ -348,26 +362,26 @@ module SixArma
348
362
 
349
363
  [true, $1, found, $10]
350
364
 
351
- when /^\s*~?\s*(#{type_pattern})\s+(\w+_\w+):\s*(.+?)\s*$/i
365
+ when REGEX_PLACE
352
366
  # ~ type place: comment
353
367
  # type place: comment
354
368
  [true, $1, [$2], $3]
355
369
 
356
- when /^\s*~?\s*(#{type_pattern})\s*?[\s:]\s*(.+?)\s*$/i
370
+ when REGEX_TYPE1
357
371
  # ~ type comment
358
372
  # type comment
359
373
  # ~ type: comment
360
374
  # type: comment
361
375
  [true, $1, [], $2]
362
376
 
363
- when /^\s*~?\s*(#{type_pattern})\s+(.+?)\s*$/i
377
+ when REGEX_TYPE2
364
378
  [true, $1, [], $2]
365
379
 
366
- when /^\s*~\s*(.*?)\s*$/
380
+ when REGEX_COMMENT1
367
381
  # ~ comment
368
382
  [true, 'CHANGED', [], $1]
369
383
 
370
- when /^\s*(.*?)\s*$/
384
+ when REGEX_COMMENT2
371
385
  # comment
372
386
  [true, 'LOCAL', [], $1]
373
387
 
@@ -377,16 +391,16 @@ module SixArma
377
391
 
378
392
  if is_valid
379
393
  case comment
380
- when /version tag|buildscripts?|build[_\s+]|readme|credits|\.txt|\.bat|changelog| txt |this/i
394
+ when REGEX_LOCAL
381
395
  type = 'LOCAL'
382
396
  end
383
- comment.gsub!(/penis|dildo|noob/i, '****')
384
- comment.gsub!(/^\s*([:\-\.~,]|\**)\s*/, '')
397
+ comment.gsub!(REGEX_NOGO, '****')
398
+ comment.gsub!(REGEX_NIL, '')
385
399
  # FIXME: Shouldn't this be possible with just 1* regex?
386
- comment.gsub!(/^\s*([:\-\.~,]|\**)\s*/, '')
400
+ comment.gsub!(REGEX_NIL, '')
387
401
  comment.gsub!('http', 'ticket: http')
388
402
  unless comment.empty?
389
- f = comment[/^\w+/]
403
+ f = comment[REGEX_FIRST]
390
404
  unless f.nil?
391
405
  case f
392
406
  #when /REMOVED|DELETED/i
@@ -394,11 +408,11 @@ module SixArma
394
408
  # comment.sub!(f, '')
395
409
  # comment.gsub!(/^[:\-\.~]/, '')
396
410
  # f = comment[/^\w+/]
397
- when /TODO|RESTORTED/i
411
+ when REGEX_TODO
398
412
  type = 'LOCAL'
399
413
  end
400
414
  # Capitalize only first word
401
- comment.gsub!(/^\w+/, '')
415
+ comment.gsub!(REGEX_FIRST, '')
402
416
  f.capitalize!
403
417
  comment = "#{f}#{comment}"
404
418
  end
@@ -409,17 +423,17 @@ module SixArma
409
423
  end
410
424
  entry = "#{entry} [#{name}]"
411
425
  case type
412
- when /^CH?A?N?G?E?D?/i, /^MODIFIED|MOD|RENAMED/i
426
+ when REGEX_CHANGED, REGEX_MODIFIED
413
427
  mod.changelog.changed << entry
414
- when /^AD?D?E?D?/i
428
+ when REGEX_ADDED
415
429
  mod.changelog.added << entry
416
- when /^RE?M?O?V?E?D/i, /^DELE?T?E?D?/i
430
+ when REGEX_REMOVED, REGEX_DELETED
417
431
  mod.changelog.removed << entry
418
- when /^UP?D?A?T?E?D?/i
432
+ when REGEX_UPDATED
419
433
  mod.changelog.updated << entry
420
- when /^FI?X?E?D?/i
434
+ when REGEX_FIXED
421
435
  mod.changelog.fixed << entry
422
- when /^MOVE?D?/i, /^LOCAL|REVERTED/i
436
+ when REGEX_MOVED, REGEX_REVERT
423
437
  mod.changelog.local << entry
424
438
  end
425
439
  end
@@ -429,29 +443,20 @@ module SixArma
429
443
  end
430
444
  end
431
445
  end
432
- mod.changelog.changed.uniq!
433
- mod.changelog.added.uniq!
434
- mod.changelog.removed.uniq!
435
- mod.changelog.updated.uniq!
436
- mod.changelog.fixed.uniq!
437
- mod.changelog.local.uniq!
438
-
439
- mod.changelog.changed.sort!
440
- mod.changelog.added.sort!
441
- mod.changelog.removed.sort!
442
- mod.changelog.updated.sort!
443
- mod.changelog.fixed.sort!
444
- mod.changelog.local.sort!
445
-
446
- SixCore::info "SVN #{mod2.destination} Current Rev: #{mod.newrev} | Previous Rev: #{mod.oldrev}"
446
+ mod.changelog.values.each do |log|
447
+ log.uniq!
448
+ log.sort!
449
+ end
450
+
451
+ @@log.info "SVN #{mod2.destination} Current Rev: #{mod.newrev} | Previous Rev: #{mod.oldrev}"
447
452
  end
448
453
  end
449
454
  end
450
455
 
451
456
  # Writes stats to yaml version file
452
457
  def write_stats()
453
- SixCore::debugs('Writing Version Stats', COMPONENT)
454
- SixCore::debug "Current Ver: #{@stats.newver}"
458
+ @@log.debug SixCore::prep_msg('Writing Version Stats', :format => 'title')
459
+ @@log.debug "Current Ver: #{@stats.newver}"
455
460
 
456
461
  File.open("#{@config.outroot}/versions/_version_#{@stats.newver}.yaml", 'w' ) do |out|
457
462
  YAML.dump( @stats, out )
@@ -460,23 +465,20 @@ module SixArma
460
465
 
461
466
 
462
467
  def gen_clog(stream)
463
- Dir.chdir("#{@config.outroot}/versions")
464
468
  ar = []
465
- Dir.glob('*.yaml') do |f|
469
+ Dir["#{@config.outroot}/versions/*.yaml"].each do |f|
466
470
  ar << f
467
471
  end
468
472
  ar.reverse!
469
- SixCore::info "Replaying logfiles from Stats Files: #{ar.first} - #{ar.last}"
473
+ @@log.info "Replaying logfiles from Stats Files: #{ar.first} - #{ar.last}"
470
474
  ar.each do |f|
471
- File.open("#{@config.outroot}/versions/#{f}") do |yf|
475
+ File.open(f) do |yf|
472
476
  stats = YAML::load(yf)
473
477
  stream.puts ''
474
478
  stream.puts "== v#{stats.newver} =="
475
479
  stats.mods.each_with_index do |mod, idx|
476
480
  mod2 = @config.mods[idx]
477
- unless mod2.svn.nil?
478
- generate_log(mod, mod2, stream, 1)
479
- end
481
+ generate_log(mod, mod2, stream, 1) unless mod2.svn.nil?
480
482
  end
481
483
  end
482
484
  end
@@ -490,9 +492,10 @@ module SixArma
490
492
  changelog = mod.changelog
491
493
 
492
494
  return if changelog.values.inject(true) { |b, a| b and a.empty? }
493
- if type == 1
495
+ case type
496
+ when 1
494
497
  stream.puts "* #{mod2.destination}, Revision: #{mod.newrev} - #{mod.oldrev}"
495
- elsif type == 2
498
+ when 2
496
499
  stream.puts "* #{mod2.destination} v#{@stats.newver}, Revision: #{mod.newrev} - #{mod.oldrev}"
497
500
  end
498
501
  generate_log_entries(changelog.added, 'ADDED', stream)
@@ -500,28 +503,21 @@ module SixArma
500
503
  generate_log_entries(changelog.removed, 'REMOVED', stream)
501
504
  generate_log_entries(changelog.changed, 'CHANGED', stream)
502
505
  generate_log_entries(changelog.fixed, 'FIXED', stream)
503
- # etc
504
506
  end
505
507
 
506
508
  def generate_log_entries(changelog, type, stream)
507
509
  return if changelog.empty?
508
510
 
509
511
  stream.puts "** #{type}:"
510
-
511
- changelog.each do |e|
512
- stream.puts "*** #{e}"
513
- end
514
-
512
+ changelog.each do |line| stream.puts "*** #{line}" end
515
513
  stream.puts
516
514
  end
517
515
 
518
516
  # Formats and writes changelog for all versions
519
517
  def write_changelog2()
520
- File.open("#{@config.outroot}/files/update/#{@config.mods[0].destination}/Docs/changelog.txt", 'w') do |lf|
521
- SixCore::info 'Writing Changelog'
518
+ File.open("#{@config.outroot}/files/update/#{@config.mods[0].destination}/Docs/#{@config.changelog}.txt", 'w') do |lf|
522
519
  lf.puts '= Changelog ='
523
520
  gen_clog(lf)
524
- Dir.chdir(SixCore::MAINDIR)
525
521
  end
526
522
  end
527
523
 
@@ -529,11 +525,9 @@ module SixArma
529
525
  def write_changelog()
530
526
  @stats.mods.each_with_index do |mod, idx|
531
527
  mod2 = @config.mods[idx]
532
- unless mod2.svn.nil?
533
- File.open("#{@config.mods[idx].changes}/changelog.txt", 'w') do |lf|
534
- generate_log(mod, mod2, lf, 2)
535
- end
536
- end
528
+ File.open("#{@config.mods[idx].changes}/changelog.txt", 'w') do |lf|
529
+ generate_log(mod, mod2, lf, 2)
530
+ end unless mod2.svn.nil?
537
531
  end
538
532
  end
539
533
 
@@ -616,10 +610,8 @@ module SixArma
616
610
  @threads.each { |t| t.join } if thread
617
611
  end
618
612
  end
619
- end
620
- end
621
613
 
622
- component = '6thSense.eu ArmA BuildTools'
623
- version = '0.7.4'
624
- SixCore::debugs "#{component} #{version} loaded"
625
- SixCore::infos("v#{version}, by Sickboy (sb_at_6thSense.eu)", component)
614
+ @@log.debug "#{COMPONENT} #{VERSION} loaded"
615
+ @@log.info SixCore::prep_msg("#{TITLE} v#{VERSION}, by Sickboy (sb_at_6thSense.eu)", :format => 'title')
616
+ end
617
+ end
@@ -9,15 +9,15 @@ module SixArma
9
9
  case folder.type
10
10
  when 'addons'
11
11
  # Remove deleted files
12
- SixCore::info 'Removing Deleted Files from Full...'
12
+ @@log.info 'Removing Deleted Files from Full...'
13
13
  delete = File.open("#{mod.changes}/#{@config.workdel}_#{folder.name}.txt") { |file| file.readlines.map { |line| SixCore::clean(line) } }
14
14
  delete.each do |item|
15
- SixCore::filedel("#{@config.outroot}\\files\\full\\#{mod.destination}\\#{folder.name}\\#{item}.*")
15
+ FileUtils::rm_f Dir["#{@config.outroot}/files/full/#{mod.destination}/#{folder.name}/#{item}.*"]
16
16
  end
17
17
 
18
- SixCore::info 'Cleaning Update folder...'
19
- SixCore::filedel("#{@config.outroot}\\files\\update\\#{mod.destination}\\#{folder.name}\\*.pbo")
20
- SixCore::filedel("#{@config.outroot}\\files\\update\\#{mod.destination}\\#{folder.name}\\*.bisign")
18
+ @@log.info 'Cleaning Update folder...'
19
+ FileUtils::rm_f Dir["#{@config.outroot}/files/update/#{mod.destination}/#{folder.name}/*.pbo"]
20
+ FileUtils::rm_f Dir["#{@config.outroot}/files/update/#{mod.destination}/#{folder.name}/*.bisign"]
21
21
  end
22
22
  end
23
23
 
@@ -28,19 +28,19 @@ module SixArma
28
28
  def copy_stuff(mod, folder)
29
29
  case folder.type
30
30
  when 'addons'
31
- SixCore::info 'Copying 3rd_Party_Pbos...'
31
+ @@log.info 'Copying 3rd_Party_Pbos...'
32
32
  thirdparty_pbo = File.open("#{mod.changes}/#{@config.work3rd_pbo}_#{folder.name}.txt") { |file| file.readlines.map { |line| SixCore::clean(line) } }
33
- source = "#{mod.path}\\#{mod.source}\\#{folder.name}"
34
- dest = "#{@config.outroot}\\files\\update\\#{mod.destination}\\#{folder.name}"
35
- thirdparty_pbo.each do |item| SixCore::filecopy("#{source}\\#{item}", dest) end
33
+ source = "#{mod.path}/#{mod.source}/#{folder.name}"
34
+ dest = "#{@config.outroot}/files/update/#{mod.destination}/#{folder.name}"
35
+ thirdparty_pbo.each do |item| FileUtils.cp_r "#{source}/#{item}", destination, :preserve => true end
36
36
  end
37
37
  end
38
38
 
39
39
  # Verify if altsource exists, if not, use real source
40
40
  def check_source(mod, folder, item)
41
- source = "#{mod.path}\\#{mod.source}\\#{folder.name}\\#{item}"
41
+ source = "#{mod.path}/#{mod.source}/#{folder.name}/#{item}"
42
42
  unless mod.altsource.nil?
43
- tmp = "#{mod.path}\\#{mod.altsource}\\#{folder.name}\\#{item}"
43
+ tmp = "#{mod.path}/#{mod.altsource}/#{folder.name}/#{item}"
44
44
  source = tmp if FileTest.directory?(tmp)
45
45
  end
46
46
  return source
@@ -53,57 +53,53 @@ module SixArma
53
53
  # read files into arrays, strip newline chars
54
54
  exclude = []
55
55
  tmp = "#{mod.changes}/_exclude_#{folder.name}.txt"
56
- if FileTest.exist?(tmp)
57
- exclude = File.open(tmp) { |file| file.readlines.map { |line| SixCore::clean(line) } }
58
- end
56
+ exclude = File.open(tmp) do |file| file.readlines.map { |line| SixCore::clean(line) } end if FileTest.exist?(tmp)
59
57
 
60
- delete = File.open("#{mod.changes}/#{@config.workdel}_#{folder.name}.txt") { |file| file.readlines.map { |line| SixCore::clean(line) } }
58
+ delete = File.open("#{mod.changes}/#{@config.workdel}_#{folder.name}.txt") do |file| file.readlines.map { |line| SixCore::clean(line) } end
61
59
 
62
- tmp = File.open("#{mod.changes}/#{@config.workbin}_#{folder.name}.txt") { |file| file.readlines.map { |line| SixCore::clean(line) } }
60
+ tmp = File.open("#{mod.changes}/#{@config.workbin}_#{folder.name}.txt") do |file| file.readlines.map { |line| SixCore::clean(line) } end
63
61
  binfiles = []
64
- tmp.each do |e|
65
- binfiles << e unless delete.include?(e) || exclude.include?(e)
62
+ tmp.each do |addon|
63
+ binfiles << addon unless delete.include?(addon) || exclude.include?(addon)
66
64
  end
67
65
 
68
- tmp = File.open("#{mod.changes}/#{@config.workpbo}_#{folder.name}.txt") { |file| file.readlines.map { |line| SixCore::clean(line) } }
66
+ tmp = File.open("#{mod.changes}/#{@config.workpbo}_#{folder.name}.txt") do |file| file.readlines.map { |line| SixCore::clean(line) } end
69
67
  pbofiles = []
70
- tmp.each do |e|
71
- pbofiles << e unless delete.include?(e) || exclude.include?(e)
68
+ tmp.each do |addon|
69
+ pbofiles << addon unless delete.include?(addon) || exclude.include?(addon)
72
70
  end
73
71
  combined = []
74
72
  combined += pbofiles
75
73
  combined += binfiles
76
74
 
77
- dest = "#{@config.outroot}\\files\\update\\#{mod.destination}\\#{folder.name}"
75
+ dest = "#{@config.outroot}/files/update/#{mod.destination}/#{folder.name}"
78
76
 
79
77
  # Create folders and mirror SOURCE files
80
- SixCore::info 'Creating folders and mirroring source files...'
78
+ @@log.info 'Creating folders and mirroring source files...'
81
79
  combined.each do |item|
82
80
  source = check_source(mod, folder, item)
83
- SixCore::filemirror(source, "#{@config.workdir}\\#{item}", '/XD .svn')
81
+ SixCore::filemirror(source, "#{@config.workdir}/#{item}", '/XD .svn')
84
82
  # When using alternate prefixes, also mirror files to prefix folder name
85
83
  prefix = SixArma::PboTools::check_prefix(source, '__AUTO__')
86
- unless prefix == '' or prefix != prefix.gsub!('\\', '')
87
- SixCore::filemirror(source, "#{@config.workdir}\\#{prefix}", '/XD .svn')
84
+ unless prefix == '' or prefix != prefix.gsub!('/', '')
85
+ SixCore::filemirror(source, "#{@config.workdir}/#{prefix}", '/XD .svn')
88
86
  end
89
87
  end
90
88
 
91
89
  # Build the addons
92
- SixCore::info 'Binarizing...'
93
- binfiles.each do |item|
94
- SixArma::PboTools.binarize("#{@config.workdir}\\#{item}", dest, '__AUTO__')
95
- end
90
+ @@log.info 'Binarizing...'
91
+ binfiles.each do |item| SixArma::PboTools.binarize("#{@config.workdir}/#{item}", dest, '__AUTO__') end
96
92
 
97
- SixCore::info 'PBOing...'
98
- pbofiles.each do |item|
99
- SixArma::PboTools.pack("#{@config.workdir}\\#{item}", dest, '__AUTO__')
100
- end
93
+ @@log.info 'PBOing...'
94
+ pbofiles.each do |item| SixArma::PboTools.pack("#{@config.workdir}/#{item}", dest, '__AUTO__') end
101
95
 
102
96
  # CleanUp
103
- SixCore::info 'Cleaning up...'
104
- SixCore::filemove("#{dest}\\*.log", "#{@config.outroot}\\log\\")
97
+ @@log.info 'Cleaning up...'
98
+ FileUtils::mv Dir["#{dest}/*.log"], "#{@config.outroot}/log/", :force => true
99
+ FileUtils::rm_f Dir["#{dest}/*.log"]
105
100
  # combined.each do |item|
106
- # SixCore::filemove("#{dest}\\#{item}.log", "#{@config.outroot}\\log\\")
101
+ # FileUtils::mv "#{dest}/#{item}.log", "#{@config.outroot}/log/", :force => true
102
+ # FileUtils::rm_f "#{dest}/#{item}.log"
107
103
  # end
108
104
  end
109
105
 
@@ -112,7 +108,7 @@ module SixArma
112
108
  def clear()
113
109
  @config.mods.each do |mod|
114
110
  mod.subfolders.each do |folder|
115
- SixCore::infos("Clear Addon Folders - #{mod.destination}\\#{folder.name}", COMPONENT)
111
+ @@log.info SixCore::prep_msg("Clear Addon Folders - #{mod.destination}/#{folder.name}", :format => 'title')
116
112
  clear_folders(mod, folder)
117
113
  end
118
114
  end
@@ -123,7 +119,7 @@ module SixArma
123
119
  def addon_changes()
124
120
  @config.mods.each do |mod|
125
121
  mod.subfolders.each do |folder|
126
- SixCore::infos("BuildChanges - #{mod.destination}\\#{folder.name}", COMPONENT)
122
+ @@log.info SixCore::prep_msg("BuildChanges - #{mod.destination}/#{folder.name}", :format => 'title')
127
123
  pbotools_build(mod, folder) if folder.type == 'addons'
128
124
  copy_stuff(mod, folder)
129
125
  end
@@ -4,7 +4,7 @@ module SixArma
4
4
  # Build an NSIS setup file
5
5
  # type:: update or full
6
6
  def nsis_build(type)
7
- SixCore::infos("Nsis Build - #{type}", COMPONENT)
7
+ @@log.info SixCore::prep_msg("Nsis Build - #{type}", :format => 'title')
8
8
  cfg = @config.nsis
9
9
 
10
10
  newdelete = "";
@@ -13,7 +13,7 @@ module SixArma
13
13
  del = File.open("#{mod.changes}/#{@config.workdel}_#{folder.name}.txt") do |file|
14
14
  file.readlines.map { |line| SixCore::clean(line) }
15
15
  end
16
- del.each { |item| newdelete += "\n Delete \"#{mod.nsis.out}\\#{folder.name}\\#{item}.*\"" }
16
+ del.each { |item| newdelete += "\n Delete \"#{mod.nsis.out}/#{folder.name}/#{item}.*\"" }
17
17
  end
18
18
  end
19
19
 
@@ -27,11 +27,11 @@ module SixArma
27
27
  ]
28
28
 
29
29
  out = "#{cfg.out}_v#{@stats.newver}#{type}.exe"
30
- nsis = SixCore::Nsis.new("#{@config.outroot}\\#{cfg.template}", "#{@config.outroot}\\#{cfg.output}")
31
- SixCore::info "Creating Setup File: #{out}..."
30
+ nsis = SixCore::Nsis.new("#{@config.outroot}/#{cfg.template}", "#{@config.outroot}/#{cfg.output}")
31
+ @@log.info "Creating Setup File: #{out}..."
32
32
  nsis.create_output(replace)
33
- size = (File.size("#{@config.outroot}\\#{out}") / 1024) / 1024
34
- SixCore::info "Finished Creating Setup File: #{out} (#{size}MB)..."
33
+ size = (File.size("#{@config.outroot}/#{out}") / 1024) / 1024
34
+ @@log.info "Finished Creating Setup File: #{out} (#{size}MB)..."
35
35
 
36
36
  return out
37
37
  end
@@ -120,14 +120,16 @@ option_parser = OptionParser.new do |opts|
120
120
 
121
121
  opts.on_tail('-?', '--help', 'Display this message') do |o|
122
122
  puts opts.help
123
+ Process.exit
123
124
  end
124
125
  end
125
126
 
126
127
  option_parser.parse!
127
128
 
129
+
128
130
  if ARGV.empty?
129
- @options.configfile = 'docs/example.yaml'
130
- SixCore::info 'Please use parameter -? for help'
131
+ @options.configfile = 'example.yaml'
132
+ SixCore::log.info 'Please use parameter -? for help'
131
133
  else
132
134
  @options.configfile = ARGV[0]
133
135
  end
@@ -10,8 +10,8 @@ module SixArma
10
10
  # create the key
11
11
  name = "#{cfg.file}_v#{@stats.newver}"
12
12
  r = SixArma::Sign.create(name)
13
- SixCore::filecopy("#{r[2]}\\#{r[1]}", "#{@config.outroot}\\files\\#{type}\\keys\\")
14
- return r
13
+ FileUtils::cp_r "#{r[2]}/#{r[1]}", "#{@config.outroot}/files/#{type}/keys/", :preserve => true
14
+ r
15
15
  end
16
16
 
17
17
  # Alternative signature creator (per folder)
@@ -23,19 +23,19 @@ module SixArma
23
23
  # create the key
24
24
  name = "#{cfg.file}_#{folder}_v#{@stats.newver}"
25
25
  r = SixArma::Sign.create(name)
26
- SixCore::filecopy("#{r[2]}\\#{r[1]}", "#{@config.outroot}\\files\\#{type}\\keys\\")
27
- return r
26
+ FileUtils::cp_r "#{r[2]}/#{r[1]}", "#{@config.outroot}/files/#{type}/keys/", :preserve => true
27
+ r
28
28
  end
29
29
 
30
30
  # Signs addons
31
31
  # type:: update or full
32
32
  def sign_do(type)
33
- SixCore::infos("Sign Do - #{type}", COMPONENT)
33
+ @@log.info SixCore::prep_msg("Sign Do - #{type}", :format => 'title')
34
34
 
35
35
  case @config.sign.keytype
36
36
  when 'whole'
37
- SixCore::filedel("#{@config.outroot}\\files\\update\\Keys\\#{@config.sign.file}_*.bikey")
38
- SixCore::filedel("#{@config.outroot}\\files\\full\\Keys\\#{@config.sign.file}_*.bikey")
37
+ FileUtils::rm_f "#{@config.outroot}/files/update/Keys/#{@config.sign.file}_*.bikey"
38
+ FileUtils::rm_f "#{@config.outroot}/files/full/Keys/#{@config.sign.file}_*.bikey"
39
39
  signfiles = sign_create('full')
40
40
  signfiles = sign_create('update') # TODO - Lame, function copies instead of create new one, but still - need to move
41
41
 
@@ -43,10 +43,10 @@ module SixArma
43
43
  @config.mods.each do |mod|
44
44
  mod.subfolders.each do |folder|
45
45
  if folder.type == 'addons'
46
- SixCore::info "Clearing signatures - #{type}\\#{mod.destination}\\#{folder.name}..."
47
- SixCore::filedel("#{@config.outroot}\\files\\#{type}\\#{mod.destination}\\#{folder.name}\\*.bisign")
48
- SixCore::info "Signing - #{mod.destination}\\#{folder.name}..."
49
- SixArma::Sign.sign("#{@config.outroot}\\files\\#{type}\\#{mod.destination}\\#{folder.name}", signfiles[0])
46
+ @@log.info "Clearing signatures - #{type}/#{mod.destination}/#{folder.name}..."
47
+ FileUtils::rm_f Dir["#{@config.outroot}/files/#{type}/#{mod.destination}/#{folder.name}/*.bisign"]
48
+ @@log.info "Signing - #{mod.destination}/#{folder.name}..."
49
+ SixArma::Sign.sign("#{@config.outroot}/files/#{type}/#{mod.destination}/#{folder.name}", signfiles[0])
50
50
  end
51
51
  end
52
52
  end
@@ -61,18 +61,18 @@ module SixArma
61
61
  #sf = mod.destination.gsub('@', '')
62
62
  #sf = mod.destination if sf.nil? or sf.empty?
63
63
  # TODO: Lame update+full processing
64
- SixCore::filedel("#{@config.outroot}\\files\\update\\Keys\\#{@config.sign.file}_#{mod.destination}*.bikey")
65
- SixCore::filedel("#{@config.outroot}\\files\\full\\Keys\\#{@config.sign.file}_#{mod.destination}*.bikey")
64
+ FileUtils::rm_f Dir["#{@config.outroot}/files/update/Keys/#{@config.sign.file}_#{mod.destination}*.bikey"]
65
+ FileUtils::rm_f Dir["#{@config.outroot}/files/full/Keys/#{@config.sign.file}_#{mod.destination}*.bikey"]
66
66
 
67
67
  signfiles = sign_create2('full', mod.destination)
68
68
  signfiles = sign_create2('update', mod.destination)
69
69
 
70
70
  mod.subfolders.each do |folder|
71
71
  if folder.type == 'addons'
72
- SixCore::info "Clearing signatures - #{type}\\#{mod.destination}\\#{folder.name}..."
73
- SixCore::filedel("#{@config.outroot}\\files\\#{type}\\#{mod.destination}\\#{folder.name}\\*.bisign")
74
- SixCore::info "Signing - #{mod.destination}\\#{folder.name}..."
75
- SixArma::Sign.sign("#{@config.outroot}\\files\\#{type}\\#{mod.destination}\\#{folder.name}", signfiles[0])
72
+ @@log.info "Clearing signatures - #{type}/#{mod.destination}/#{folder.name}..."
73
+ FileUtils::rm_f Dir["#{@config.outroot}/files/#{type}/#{mod.destination}/#{folder.name}/*.bisign"]
74
+ @@log.info "Signing - #{mod.destination}/#{folder.name}..."
75
+ SixArma::Sign.sign("#{@config.outroot}/files/#{type}/#{mod.destination}/#{folder.name}", signfiles[0])
76
76
  end
77
77
  end
78
78
  end
@@ -6,7 +6,7 @@ module SixArma
6
6
  # cfg:: Mod Config Object
7
7
  # cfg2:: Mod Stats Object
8
8
  def svn_write_list(cfg, cfg2)
9
- SixCore::info 'Writing SVN Changelog...'
9
+ @@log.info 'Writing SVN Changelog...'
10
10
  cfg.subfolders.each_with_index do |folder,idx|
11
11
  folder2 = cfg2.subfolders[idx]
12
12
  case folder.type
@@ -60,7 +60,7 @@ module SixArma
60
60
  end
61
61
 
62
62
  if t.size > 0
63
- SixCore::info "ABORT: Changed but not found in lists: #{t}"
63
+ @@log.info "ABORT: Changed but not found in lists: #{t}"
64
64
  Process.exit
65
65
  end
66
66
 
@@ -76,13 +76,13 @@ module SixArma
76
76
  # cfg:: Mod Config Object
77
77
  # cfg2:: Mod Stats Object
78
78
  def svn_generate(cfg, cfg2)
79
- SixCore::info 'Generating SVN Changelog...'
79
+ @@log.info 'Generating SVN Changelog...'
80
80
  svn = SixCore::Svn.new("#{cfg.path}#{cfg.source}", cfg.svn.user, cfg.svn.pass)
81
81
 
82
82
  svn.diff(cfg2.oldrev, cfg2.newrev).each do |entry|
83
83
  # only want to process folders under the given folder
84
84
  cfg.subfolders.each_with_index do |f, idx|
85
- entrymod = entry.gsub("#{svn.repos}\\#{f.name}\\", '')
85
+ entrymod = entry.gsub("#{svn.repos.gsub('/', '\\')}\\#{f.name}\\", '')
86
86
  if entrymod != entry
87
87
  f2 = cfg2.subfolders[idx]
88
88
  if f.type == 'addons'
@@ -118,7 +118,7 @@ module SixArma
118
118
  # Meta method, runs generate and write_list for every mod
119
119
  def svn_do()
120
120
  @config.mods.each_with_index do |mod,idx|
121
- SixCore::infos("SVN Sync - #{mod.destination}", COMPONENT)
121
+ @@log.info SixCore::prep_msg("SVN Sync - #{mod.destination}", :format => 'title')
122
122
  # Clean arrays
123
123
  @stats.mods[idx].subfolders.each do |f|
124
124
  f.add = []
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sixarma-bt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sickboy
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-30 00:00:00 +01:00
12
+ date: 2008-12-02 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.4.0
23
+ version: 0.5.0
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sixcore
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.3.0
33
+ version: 0.4.0
34
34
  version:
35
35
  description: The program uses a few of my other libraries and tools available for the Armed Assault Game, and subversion, to automate the building process of Full Conversion Mods, while keeping flexibility and configurability in mind
36
36
  email: sb@6thsense.eu