six-rsync 0.5.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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