six-rsync 0.5.3 → 0.6.0

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.
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ require 'rake/testtask'
12
12
 
13
13
  spec = Gem::Specification.new do |s|
14
14
  s.name = 'six-rsync'
15
- s.version = '0.5.3'
15
+ s.version = '0.6.0'
16
16
  s.has_rdoc = true
17
17
  s.extra_rdoc_files = ['README', 'LICENSE']
18
18
  s.summary = 'Your summary here'
data/bin/six-rsync CHANGED
@@ -13,5 +13,5 @@ rescue => e
13
13
  rescue => e
14
14
  puts "ERROR: #{e.class} #{e.message} #{e.backtrace.join("\n")}"
15
15
  end
16
- sleep 10
16
+ sleep 5
17
17
  end
data/bin/six-rsync-mirror CHANGED
@@ -13,5 +13,5 @@ rescue => e
13
13
  rescue => e
14
14
  puts "ERROR: #{e.class} #{e.message} #{e.backtrace.join("\n")}"
15
15
  end
16
- sleep 10
16
+ sleep 5
17
17
  end
data/lib/six/rsync/lib.rb CHANGED
@@ -59,11 +59,7 @@ module Six
59
59
 
60
60
  def status
61
61
  @logger.info "Showing changes on #{@rsync_work_dir}"
62
- @config = load_config
63
- unless @config
64
- @logger.error "Not an Rsync repository!"
65
- return
66
- end
62
+ handle_config
67
63
 
68
64
  load_repos(:local)
69
65
  load_repos(:remote)
@@ -113,101 +109,6 @@ module Six
113
109
  save_repos(:remote)
114
110
  end
115
111
 
116
- def clone(repository, name, opts = {})
117
- @path = opts[:path] || '.'
118
- @rsync_work_dir = opts[:path] ? File.join(@path, name) : name
119
-
120
- # TODO: Solve logger mess completely.
121
- @logger = opts[:log] if opts[:log]
122
-
123
- case repository
124
- when Array
125
- config[:hosts] += repository
126
- when String
127
- config[:hosts] << repository
128
- end
129
-
130
- begin
131
- init
132
-
133
- # TODO: Eval move to update?
134
- arr_opts = []
135
- arr_opts << "-I" if opts[:force]
136
- begin
137
- update('', arr_opts)
138
- rescue RsyncError => e
139
- @logger.error "Unable to sucessfully update, aborting... (#{e.class}: #{e.message})"
140
- @logger.debug e.backtrace.join("\n")
141
- FileUtils.rm_rf @rsync_work_dir if File.exists?(@rsync_work_dir)
142
- end
143
- rescue RsyncError => e
144
- @logger.error "Unable to initialize (#{e.class}: #{e.message})"
145
- @logger.debug e.backtrace.join("\n")
146
- end
147
-
148
- opts[:bare] ? {:repository => @rsync_work_dir} : {:working_directory => @rsync_work_dir}
149
- end
150
-
151
- def update(cmd, x_opts = [], opts = {})
152
- @logger.debug "Checking for updates..."
153
- @config = load_config
154
- unless @config
155
- @logger.error "Not an Rsync repository!"
156
- raise RsyncError
157
- end
158
-
159
- unless config[:hosts].size > 0
160
- @logger.error "No hosts configured!"
161
- raise RsyncError
162
- end
163
-
164
- load_repos(:local)
165
- load_repos(:remote)
166
-
167
- hosts = config[:hosts].clone
168
- host = hosts.sample
169
-
170
- if opts[:force]
171
- done = false
172
- b = false
173
- verbose = @verbose
174
- @verbose = false
175
- while hosts.size > 0 && !done do
176
- # FIXME: Nasty
177
- host = hosts.sample if b
178
- b = true
179
- hosts -= [host]
180
- @logger.info "Trying #{host}"
181
- begin
182
- arr_opts = []
183
- arr_opts << PARAMS
184
- arr_opts += x_opts
185
- if host[/\A(\w)*\@/]
186
- arr_opts << @rsh #"-e ssh"
187
- end
188
- arr_opts << esc(File.join(host, '.pack/.'))
189
- arr_opts << esc(pack_path)
190
- command(cmd, arr_opts)
191
- calc
192
- save_repos
193
- done = true
194
- rescue => e
195
- @logger.warn "#{e.class}: #{e.message}"
196
- @logger.debug e.backtrace.join("\n")
197
- end
198
- end
199
- @verbose = verbose
200
- raise RsyncError if !done
201
- else
202
- #reset(:hard => true)
203
- calc
204
- save_repos
205
-
206
- # fetch latest sums and only update when changed
207
- compare_sums(true, host)
208
- end
209
- end
210
-
211
112
  # TODO: Allow local-self healing, AND remote healing. reset and fetch?
212
113
  def reset(opts = {})
213
114
  @logger.info "Resetting!"
@@ -230,18 +131,16 @@ module Six
230
131
  ar = Dir[File.join(@rsync_work_dir, '/**/*')]
231
132
 
232
133
  change = false
233
- i = 0
234
- ar.each do |file|
235
- i += 1
236
- unless file[/\.gz\Z/]
134
+ ar.each_with_index do |file, i|
135
+ unless file[/\.gz$/]
237
136
  relative = file.clone
238
137
  relative.gsub!(@rsync_work_dir, '')
239
- relative.gsub!(/\A[\\|\/]/, '')
138
+ relative.gsub!(/^[\\|\/]/, '')
240
139
 
241
140
  checksum = md5(file)
242
141
  if checksum != @repos_remote[:wd][relative]
243
142
  change = true
244
- @logger.info "Packing #{i}/#{ar.size}: #{file}"
143
+ @logger.info "Packing #{i + 1}/#{ar.size}: #{file}"
245
144
  gzip(file)
246
145
  @repos_remote[:wd][relative] = checksum
247
146
  @repos_remote[:pack]["#{relative}.gz"] = md5("#{file}.gz")
@@ -255,29 +154,15 @@ module Six
255
154
  end
256
155
  end
257
156
 
258
- def rename(entry, newentry)
259
- FileUtils.mv(entry, "#{entry}_tmp")
260
- FileUtils.mv("#{entry}_tmp", newentry)
261
- end
262
-
263
157
  def commit
264
158
  cfg = CONFIG[:commit] ? CONFIG[:commit] : Hash.new
265
159
  @logger.info "Committing changes on #{@rsync_work_dir}"
266
- @config = load_config
267
- unless @config
268
- @logger.error "Not an Rsync repository!"
269
- return
270
- end
271
-
272
- unless config[:hosts].size > 0
273
- @logger.error "No hosts configured!"
274
- return
275
- end
160
+ handle_config
161
+ handle_hosts
276
162
 
277
163
  load_repos(:local)
278
164
  load_repos(:remote)
279
165
 
280
-
281
166
  =begin
282
167
  # TODO: Rewrite
283
168
  if cfg[:force_downcase]
@@ -379,14 +264,16 @@ module Six
379
264
 
380
265
  def push(host = nil)
381
266
  @logger.info "Pushing..."
382
- @config = load_config
267
+ handle_config
268
+ handle_hosts
269
+
383
270
  host = config[:hosts].sample unless host
384
271
  # TODO: UNCLUSTERFUCK
385
272
  arr_opts = []
386
273
  arr_opts << PARAMS
387
274
 
388
275
  # Upload .pack changes
389
- if host[/\A(\w)*\@/]
276
+ if host[/^(\w)*\@/]
390
277
  arr_opts << @rsh
391
278
  end
392
279
  arr_opts << esc(pack_path('.'))
@@ -395,10 +282,147 @@ module Six
395
282
  command('', arr_opts)
396
283
  end
397
284
 
398
- def compare_set(typ, host, online = true)
285
+ def clone(repository, name, opts = {})
286
+ @path = opts[:path] || '.'
287
+ @rsync_work_dir = opts[:path] ? File.join(@path, name) : name
288
+
289
+ # TODO: Solve logger mess completely.
290
+ @logger = opts[:log] if opts[:log]
291
+
292
+ case repository
293
+ when Array
294
+ config[:hosts] += repository
295
+ when String
296
+ config[:hosts] << repository
297
+ end
298
+
299
+ # TODO: Eval move to update?
300
+ arr_opts = []
301
+ arr_opts << "-I" if opts[:force]
302
+
303
+ begin
304
+ init
305
+ begin
306
+ update('', arr_opts)
307
+ rescue RsyncError => e
308
+ @logger.error "Unable to sucessfully update... (#{e.class}: #{e.message})"
309
+ @logger.debug e.backtrace.join("\n")
310
+ end
311
+ rescue => e
312
+ @logger.error "Unable to initialize (#{e.class}: #{e.message})"
313
+ @logger.debug e.backtrace.join("\n")
314
+ FileUtils.rm_rf @rsync_work_dir if File.exists?(@rsync_work_dir)
315
+ raise RsyncError
316
+ end
317
+
318
+ opts[:bare] ? {:repository => @rsync_work_dir} : {:working_directory => @rsync_work_dir}
319
+ end
320
+
321
+ def update(cmd, x_opts = [], opts = {})
322
+ @logger.debug "Checking for updates..."
323
+
324
+ handle_config
325
+ handle_hosts
326
+
399
327
  load_repos(:local)
400
328
  load_repos(:remote)
401
329
 
330
+ hosts = config[:hosts].clone
331
+ host = hosts.sample
332
+
333
+ if opts[:force]
334
+ done = false
335
+ b = false
336
+ verbose = @verbose
337
+ @verbose = false
338
+ until hosts.empty? || done do
339
+ # FIXME: Nasty
340
+ host = hosts.sample if b
341
+ b = true
342
+ hosts -= [host]
343
+ @logger.info "Trying #{host}"
344
+ begin
345
+ arr_opts = []
346
+ arr_opts << PARAMS
347
+ arr_opts += x_opts
348
+ arr_opts << @rsh if host[/^(\w)*\@/]
349
+ arr_opts << esc(File.join(host, '.pack/.'))
350
+ arr_opts << esc(pack_path)
351
+ command(cmd, arr_opts)
352
+ calc
353
+ save_repos
354
+ done = true
355
+ rescue => e
356
+ @logger.warn "#{e.class}: #{e.message}"
357
+ @logger.debug e.backtrace.join("\n")
358
+ end
359
+ end
360
+ @verbose = verbose
361
+ raise RsyncError if !done
362
+ else
363
+ #reset(:hard => true)
364
+ calc
365
+ save_repos
366
+
367
+ # fetch latest sums and only update when changed
368
+ compare_sums(true, host)
369
+ end
370
+ end
371
+
372
+ def compare_sums(online = true, host = config[:hosts].sample)
373
+ load_repos(:local)
374
+ done = false
375
+
376
+ if online
377
+ hosts = config[:hosts].clone
378
+ b = false
379
+ verbose = @verbose
380
+ @verbose = false
381
+
382
+ until hosts.empty? || done do
383
+ # FIXME: Nasty
384
+ host = hosts.sample if b
385
+ b = true
386
+ hosts -= [host]
387
+ @logger.info "Trying #{host}"
388
+
389
+ begin
390
+ FileUtils.cp(pack_path(".repository.yml"), rsync_path(".repository-pack.yml")) if File.exists?(pack_path(".repository.yml"))
391
+ fetch_file(".pack/.repository.yml", host)
392
+ load_repos(:remote)
393
+
394
+ if @repos_local[:version] > @repos_remote[:version] # && !force
395
+ @logger.warn "WARNING, version on server is OLDER, aborting!"
396
+ raise RsyncError
397
+ end
398
+ done = true
399
+ rescue => e
400
+ @logger.warn "#{e.class}: #{e.message}"
401
+ @logger.debug e.backtrace.join("\n")
402
+ FileUtils.cp(rsync_path(".repository-pack.yml"), pack_path(".repository.yml")) if File.exists?(rsync_path(".repository-pack.yml"))
403
+ ensure
404
+ FileUtils.rm(rsync_path(".repository-pack.yml")) if File.exists?(rsync_path(".repository-pack.yml"))
405
+ end
406
+ end
407
+ @verbose = verbose
408
+ else
409
+ load_repos(:remote)
410
+ end
411
+
412
+ if done && online
413
+ @logger.info "Verifying Packed files..."
414
+ compare_set(:pack, host)
415
+
416
+ @logger.info "Verifying Unpacked files..."
417
+ compare_set(:wd, host)
418
+
419
+ # Bump version and make final save
420
+ @repos_local[:version] = @repos_remote[:version]
421
+ save_repos
422
+ end
423
+ end
424
+
425
+ def compare_set(typ, host, online = true)
402
426
  #if local[typ][:md5] == remote[typ][:md5]
403
427
  # @logger.info "#{typ} Match!"
404
428
  #else
@@ -426,7 +450,7 @@ module Six
426
450
  ## Pack
427
451
  if online
428
452
  b = false
429
- while hosts.size > 0 && !done do
453
+ until hosts.empty? || done do
430
454
  # FIXME: Nasty
431
455
  if b
432
456
  host = hosts.sample
@@ -435,44 +459,30 @@ module Six
435
459
  slist = nil
436
460
  b = true
437
461
  hosts -= [host]
462
+
463
+ # TODO: Progress bar
464
+ arr_opts = []
465
+ arr_opts << PARAMS
466
+ arr_opts << @rsh if host[/^(\w)*\@/]
467
+
468
+ if mismatch.size > (@repos_remote[typ].size / 2)
469
+ # Process full folder
470
+ @logger.info "Many files mismatched (#{mismatch.size}), running full update on .pack folder"
471
+ else
472
+ # Process only selective
473
+ @logger.info "Fetching #{mismatch.size} files... Please wait"
474
+ slist = File.join(TEMP_PATH, ".six-rsync_#{rand 9999}-list")
475
+ slist.gsub!("\\", "/")
476
+ File.open(slist, 'w') { |f| mismatch.each { |e| f.puts e } }
477
+
478
+ arr_opts << "--files-from=#{win2cyg("\"#{slist}\"")}"
479
+ end
480
+
438
481
  begin
439
- # TODO: Progress bar
440
- if mismatch.size > (@repos_remote[typ].size / 2)
441
- @logger.info "Many files mismatched (#{mismatch.size}), running full update on .pack folder"
442
- arr_opts = []
443
- arr_opts << PARAMS
444
- if host[/\A(\w)*\@/]
445
- arr_opts << @rsh
446
- end
447
-
448
- arr_opts << esc(File.join(host, '.pack/.'))
449
- arr_opts << esc(pack_path)
450
- command('', arr_opts)
451
- else
452
- c = mismatch.size
453
- @logger.info "Fetching #{mismatch.size} files... Please wait"
454
- slist = File.join(TEMP_PATH, ".six-rsync_#{rand 9999}-list")
455
- slist.gsub!("\\", "/")
456
- File.open(slist, 'w') do |f|
457
- mismatch.each { |e| f.puts e }
458
- end
459
- arr_opts = []
460
- arr_opts << PARAMS
461
- arr_opts << @rsh if host[/\A(\w)*\@/]
462
-
463
- cyg_slist = "\"#{slist}\""
464
-
465
- while cyg_slist[WINDRIVE] do
466
- drive = cyg_slist[WINDRIVE]
467
- cyg_slist.gsub!(drive, "\"/cygdrive/#{$1}")
468
- end
469
- arr_opts << "--files-from=#{cyg_slist}"
470
-
471
- arr_opts << esc(File.join(host, '.pack/.'))
472
- arr_opts << esc(pack_path)
473
-
474
- command('', arr_opts)
475
- end
482
+ arr_opts << esc(File.join(host, '.pack/.'))
483
+ arr_opts << esc(pack_path)
484
+ command('', arr_opts)
485
+
476
486
  done = true
477
487
  rescue => e
478
488
  @logger.warn "Failure"
@@ -497,60 +507,45 @@ module Six
497
507
  del_file(key, typ) unless config[:exclude].include?(key) || !@repos_remote[typ][key].nil?
498
508
  end
499
509
 
510
+ # Calculate new sums
500
511
  @repos_local[typ] = calc_sums(typ)
501
- @repos_local[:version] = @repos_remote[:version]
512
+
513
+ # Save current progress, incase somewhere else goes wrong.
502
514
  save_repos
503
515
  end
504
516
 
505
- def compare_sums(online = true, host = config[:hosts].sample)
506
- hosts = config[:hosts].clone
507
- done = false
508
517
 
509
- ## Pack
510
- if online
511
- b = false
512
- verbose = @verbose
513
- @verbose = false
514
- while hosts.size > 0 && !done do
515
- # FIXME: Nasty
516
- host = hosts.sample if b
517
- b = true
518
- hosts -= [host]
519
- @logger.info "Trying #{host}"
518
+ private
519
+ def handle_config
520
+ @config = load_config
521
+ unless @config
522
+ @logger.error "Not an Rsync repository!"
523
+ raise RsyncError
524
+ end
525
+ end
520
526
 
521
- begin
522
- FileUtils.cp(pack_path(".repository.yml"), rsync_path(".repository-pack.yml"))
523
- fetch_file(".pack/.repository.yml", host)
527
+ def handle_hosts
528
+ unless config[:hosts].size > 0
529
+ @logger.error "No hosts configured!"
530
+ raise RsyncError
531
+ end
532
+ end
524
533
 
525
- load_repos(:remote)
526
- load_repos(:local)
534
+ def rename(entry, newentry)
535
+ FileUtils.mv(entry, "#{entry}_tmp")
536
+ FileUtils.mv("#{entry}_tmp", newentry)
537
+ end
527
538
 
528
- if @repos_local[:version] > @repos_remote[:version] # && !force
529
- @logger.warn "WARNING, version on server is OLDER, aborting!"
530
- FileUtils.cp(rsync_path(".repository-pack.yml"), pack_path(".repository.yml"))
531
- raise RsyncError
532
- end
533
- done = true
534
- rescue => e
535
- @logger.warn "#{e.class}: #{e.message}"
536
- @logger.debug e.backtrace.join("\n")
537
- ensure
538
- FileUtils.rm(rsync_path(".repository-pack.yml"))
539
- end
540
- end
541
- @verbose = verbose
542
- end
543
- if done && online
544
- # TODO: Don't do actions when not online
545
- @logger.info "Verifying Packed files..."
546
- compare_set(:pack, host)
547
- @logger.info "Verifying Unpacked files..."
548
- compare_set(:wd, host)
549
- save_repos
539
+ def win2cyg(path)
540
+ path = path.clone
541
+ #path.gsub!(WINDRIVE) {|s| "\"/cygdrive/#{s}" }
542
+ while path[WINDRIVE]
543
+ drive = path[WINDRIVE]
544
+ path.gsub!(drive, "\"/cygdrive/#{$1}")
550
545
  end
546
+ path
551
547
  end
552
548
 
553
- private
554
549
  def esc(val); "\"#{val}\""; end
555
550
  def escape(s); "\"" + s.to_s.gsub('\"', '\"\\\"\"') + "\""; end
556
551
 
@@ -563,14 +558,12 @@ module Six
563
558
 
564
559
  def rsync_path(path = '')
565
560
  p = File.join(@rsync_work_dir, DIR_RSYNC)
566
- p = File.join(p, path) unless path.size == 0
567
- p
561
+ path.size == 0 ? p : File.join(p, path)
568
562
  end
569
563
 
570
564
  def pack_path(path = '')
571
565
  p = File.join(@rsync_work_dir, DIR_PACK)
572
- p = File.join(p, path) unless path.size == 0
573
- p
566
+ path.size == 0 ? p : File.join(p, path)
574
567
  end
575
568
 
576
569
  def fetch_file(path, host)
@@ -582,9 +575,7 @@ module Six
582
575
  @logger.debug "Fetching #{path} from #{host}"
583
576
  arr_opts = []
584
577
  arr_opts << PARAMS
585
- if host[/\A(\w)*\@/]
586
- arr_opts << @rsh
587
- end
578
+ arr_opts << @rsh if host[/^(\w)*\@/]
588
579
  arr_opts << esc(File.join(host, path))
589
580
  arr_opts << esc(rsync_path(folder))
590
581
 
@@ -602,10 +593,10 @@ module Six
602
593
  reg = case typ
603
594
  when :pack
604
595
  ar = Dir[pack_path('**/*')]
605
- /\A[\\|\/]\.rsync[\\|\/]\.pack[\\|\/]/
596
+ /^[\\|\/]\.rsync[\\|\/]\.pack[\\|\/]/
606
597
  when :wd
607
598
  ar = Dir[File.join(@rsync_work_dir, '/**/*')]
608
- /\A[\\|\/]/
599
+ /^[\\|\/]/
609
600
  end
610
601
  h = Hash.new
611
602
  ar.each do |file|
@@ -613,8 +604,9 @@ module Six
613
604
  relative.gsub!(@rsync_work_dir, '')
614
605
  relative.gsub!(reg, '')
615
606
 
607
+ next if config[:exclude].include?(relative)
616
608
  sum = md5(file)
617
- h[relative] = sum if sum && !config[:exclude].include?(relative)
609
+ h[relative] = sum if sum
618
610
  end
619
611
  h
620
612
  end
@@ -622,11 +614,7 @@ module Six
622
614
  def load_config; load_yaml(File.join(rsync_path, 'config.yml')); end
623
615
 
624
616
  def load_yaml(file)
625
- if File.exists?(file)
626
- YAML::load_file(file)
627
- else
628
- nil
629
- end
617
+ File.exists?(file) ? YAML::load_file(file) : nil
630
618
  end
631
619
 
632
620
  def save_default_config
@@ -654,12 +642,11 @@ module Six
654
642
  end
655
643
 
656
644
  def load_repos(typ)
657
- config = Hash.new
658
- case typ
645
+ config = case typ
659
646
  when :local
660
- File.open(rsync_path('.repository.yml')) { |file| config = YAML::load(file) }
647
+ YAML::load_file(rsync_path('.repository.yml'))
661
648
  when :remote
662
- File.open(pack_path('.repository.yml')) { |file| config = YAML::load(file) }
649
+ YAML::load_file(pack_path('.repository.yml'))
663
650
  end
664
651
 
665
652
  [:wd, :pack].each do |t|
@@ -696,12 +683,11 @@ module Six
696
683
  end
697
684
 
698
685
  unless File.directory? path
699
- path[/(.*)[\/|\\](.*)/]
700
- folder, file = $1, $2
686
+ folder, file = File.dirname(path), File.basename(path)
701
687
  Dir.chdir(folder) do
702
688
  r = %x[md5sum #{esc(file)}]
703
689
  @logger.debug r
704
- r[/\A\w*/]
690
+ r[/^\w*/]
705
691
  end
706
692
  end
707
693
  end
@@ -726,6 +712,7 @@ module Six
726
712
  out = %x[gzip -f --best --rsyncable --keep #{esc(file)}]
727
713
  @logger.debug out
728
714
  raise RsyncError if $? != 0
715
+ out
729
716
  end
730
717
 
731
718
  def unpack_file(file, path)
@@ -756,7 +743,7 @@ module Six
756
743
  unless File.directory? file
757
744
  relative = file.clone
758
745
  relative.gsub!(@rsync_work_dir, '')
759
- relative.gsub!(/\A[\\|\/]\.rsync[\\|\/]\.pack[\\|\/]/, '')
746
+ relative.gsub!(/^[\\|\/]\.rsync[\\|\/]\.pack[\\|\/]/, '')
760
747
  fil = relative
761
748
  folder = "."
762
749
  folder, fil = $1, $2 if relative[/(.*)\/(.*)/]
@@ -780,24 +767,11 @@ module Six
780
767
  opts << "--timeout=#{DEFAULT_TIMEOUT}"
781
768
 
782
769
  opts = [opts].flatten.map {|s| s }.join(' ') # escape()
783
- rsync_cmd = "rsync #{cmd} #{opts} #{redirect} 2>&1"
784
-
785
- while rsync_cmd[WINDRIVE] do
786
- drive = rsync_cmd[WINDRIVE]
787
- rsync_cmd.gsub!(drive, "\"/cygdrive/#{$1}")
788
- end
770
+ rsync_cmd = win2cyg("rsync #{cmd} #{opts} #{redirect} 2>&1")
789
771
 
790
- if @logger
791
- @logger.debug(rsync_cmd)
792
- end
793
-
794
- out = nil
795
- if chdir && (Dir.getwd != path)
796
- Dir.chdir(path) { out = run_command(rsync_cmd, &block) }
797
- else
798
- out = run_command(rsync_cmd, &block)
799
- end
772
+ @logger.debug(rsync_cmd) if @logger
800
773
 
774
+ out = chdir && (Dir.getwd != path) ? Dir.chdir(path) { run_command(rsync_cmd, &block) } : run_command(rsync_cmd, &block)
801
775
  out
802
776
  end
803
777
 
data/lib/six/rsync-app.rb CHANGED
@@ -56,8 +56,12 @@ module Six
56
56
  end
57
57
 
58
58
  def self.clone(folder)
59
- folder[/(.*)[\/|\\](.*)/]
60
- pa, folder = $1, $2
59
+ pa = if folder[/[\/|\\]/]
60
+ folder = File.basename(folder)
61
+ File.dirname(folder)
62
+ else
63
+ Dir.pwd
64
+ end
61
65
  @repo = Six::Repositories::Rsync.clone(Six::Repositories::Rsync.host, folder, :path => pa, :log => Six::Repositories::Rsync.logger)
62
66
  end
63
67
 
data/lib/six/rsync.rb CHANGED
@@ -19,7 +19,7 @@ case RUBY_VERSION
19
19
  when /1\.8\.[0-9]/
20
20
  class Array
21
21
  def sample
22
- self[rand self.size]
22
+ self[rand(self.size)]
23
23
  end
24
24
  end
25
25
  end
@@ -31,7 +31,7 @@ module Six
31
31
 
32
32
  module Rsync
33
33
  COMPONENT = 'six-rsync'
34
- VERSION = '0.5.3'
34
+ VERSION = '0.6.0'
35
35
  FOLDER = /(.*)\/(.*)/
36
36
 
37
37
  case RUBY_PLATFORM
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 5
8
- - 3
9
- version: 0.5.3
7
+ - 6
8
+ - 0
9
+ version: 0.6.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Sickboy
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-01 00:00:00 +02:00
17
+ date: 2010-05-07 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency