rbsync 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/rbsync.rb +37 -71
- data/rbsync.gemspec +2 -3
- data/test/test_progressbar.rb +85 -0
- metadata +4 -5
- data/new/test.txt +0 -10
- data/old/test.txt +0 -10
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.7
|
data/lib/rbsync.rb
CHANGED
@@ -161,12 +161,6 @@ class RbSync
|
|
161
161
|
ret = files.map{|e|
|
162
162
|
FileTest.exist?(e[1])
|
163
163
|
}
|
164
|
-
#ret = target.map{|key|
|
165
|
-
#e = src_files[key].first
|
166
|
-
#FileUtils.copy( File.expand_path(e,src) , File.expand_path(e,dest),
|
167
|
-
#{:preserve=>self.preserve?,:verbose=>self.verbose? })
|
168
|
-
#FileTest.exist?(File.expand_path(e,dest))
|
169
|
-
#}
|
170
164
|
puts "同期が終りました" if ret.select{|e|!e}.size == 0 && self.debug?
|
171
165
|
puts "同期に失敗したみたい" if ret.select{|e|!e}.size != 0 && self.debug?
|
172
166
|
end
|
@@ -306,9 +300,40 @@ class RbSync
|
|
306
300
|
end
|
307
301
|
def copy_r(files)
|
308
302
|
##todo 進捗を調べる.
|
309
|
-
|
310
|
-
|
311
|
-
|
303
|
+
if(@conf[:progress])
|
304
|
+
puts ("copy #{files.size} files")
|
305
|
+
$stdout.flush
|
306
|
+
end
|
307
|
+
files.each_with_index{|e,i|
|
308
|
+
#show
|
309
|
+
if(@conf[:progress])
|
310
|
+
puts ("start #{i+1}/#{files.size}")
|
311
|
+
$stdout.flush
|
312
|
+
end
|
313
|
+
#main
|
314
|
+
copy_thread = Thread.start{
|
315
|
+
FileUtils.copy( e[0] , e[1] ,{:preserve=>self.preserve?,:verbose=>self.verbose? } )
|
316
|
+
}
|
317
|
+
#progress of each file
|
318
|
+
progress_thread = nil
|
319
|
+
if(@conf[:progress])
|
320
|
+
progress_thread = Thread.start{
|
321
|
+
bar = ProgressBar.new
|
322
|
+
bar.size = 30
|
323
|
+
src_size = File.size(e[0])
|
324
|
+
dst_size = -1
|
325
|
+
bar.start("copying #{e[0]} to #{e[1]}")
|
326
|
+
while(src_size!=dst_size)
|
327
|
+
src_size = File.size(e[0]).to_f
|
328
|
+
dst_size = File.size(e[1]).to_f
|
329
|
+
bar.progress(((dst_size/src_size)*100).to_int)
|
330
|
+
sleep 0.2
|
331
|
+
end
|
332
|
+
bar.end("done")
|
333
|
+
}
|
334
|
+
end
|
335
|
+
copy_thread.join
|
336
|
+
progress_thread.join if progress_thread
|
312
337
|
}
|
313
338
|
end
|
314
339
|
def sync(src,dest,options={})
|
@@ -405,14 +430,14 @@ class ProgressBar
|
|
405
430
|
attr_accessor :size, :out, :bar_char_undone, :bar_char_done, :show_percent
|
406
431
|
def initialize()
|
407
432
|
@out = $stdout
|
408
|
-
@size =
|
433
|
+
@size = 10
|
409
434
|
@bar_char_undone = "_"
|
410
435
|
@bar_char_done = "#"
|
411
436
|
@show_percent = true
|
412
|
-
@printend_max_size =
|
437
|
+
@printend_max_size = 0
|
413
438
|
end
|
414
439
|
def start(message="")
|
415
|
-
out.
|
440
|
+
out.puts message
|
416
441
|
out.print bar_char_undone * size
|
417
442
|
out.flush
|
418
443
|
end
|
@@ -442,62 +467,3 @@ class ProgressBar
|
|
442
467
|
end
|
443
468
|
end
|
444
469
|
|
445
|
-
#require 'tmpdir'
|
446
|
-
#require 'find'
|
447
|
-
#require 'pp'
|
448
|
-
#Dir.mktmpdir('goo') do |dir|
|
449
|
-
#Dir.chdir dir do
|
450
|
-
#Dir.mkdir("old")
|
451
|
-
#Dir.mkdir("new")
|
452
|
-
#open("./old/test.txt", "w+"){|f| 10.times{f.puts("test")}}
|
453
|
-
#open("./new/test.txt", "w+"){|f| 10.times{f.puts("different")}}
|
454
|
-
#rsync = RbSync.new
|
455
|
-
#rsync.sync("old","new",{:overwrite=>false,:check_hash=>true})
|
456
|
-
#p FileUtils.cmp("old/test.txt","new/test.txt") == false
|
457
|
-
#end
|
458
|
-
#end
|
459
|
-
|
460
|
-
|
461
|
-
#require 'tmpdir'
|
462
|
-
#require 'find'
|
463
|
-
#require 'pp'
|
464
|
-
#Dir.mktmpdir('goo') do |dir|
|
465
|
-
#Dir.chdir dir do
|
466
|
-
#Dir.mkdir("old")
|
467
|
-
#Dir.mkdir("new")
|
468
|
-
#open("./old/test.txt", "w+"){|f| 10.times{f.puts("test")}}
|
469
|
-
#rsync = RbSync.new
|
470
|
-
#rsync.sync("old","new")
|
471
|
-
#p FileUtils.cmp("old/test.txt","new/test.txt") == true
|
472
|
-
#open("./old/test.txt", "w+"){|f| 10.times{f.puts("changed")}}
|
473
|
-
#rsync.sync("old","new",{:rename => true})
|
474
|
-
#p FileUtils.cmp("old/test.txt","new/test.txt") == false
|
475
|
-
#p FileUtils.cmp("old/test.txt","new/test(1).txt") == true
|
476
|
-
#open("./old/test.txt", "w+"){|f| 10.times{f.puts("changed!!!")}}
|
477
|
-
#rsync.sync("old","new",{:rename => true})
|
478
|
-
#p FileUtils.cmp("old/test.txt","new/test(2).txt") == true
|
479
|
-
#end
|
480
|
-
#end
|
481
|
-
#require 'tmpdir'
|
482
|
-
#require 'find'
|
483
|
-
#require 'pp'
|
484
|
-
#Dir.mktmpdir('goo') do |dir|
|
485
|
-
#Dir.chdir dir do
|
486
|
-
#Dir.mkdir("old")
|
487
|
-
#Dir.mkdir("new")
|
488
|
-
## 同名のファイルを作って
|
489
|
-
#open("./old/test.txt", "w+"){|f| 10.times{f.puts("test")}}
|
490
|
-
#old_content =open("./old/test.txt", "r").read
|
491
|
-
## ミラーして
|
492
|
-
#rsync = RbSync.new
|
493
|
-
#rsync.sync("old","new")
|
494
|
-
#p FileUtils.cmp("old/test.txt","new/test.txt") == true
|
495
|
-
#open("./old/test.txt", "w+"){|f| 10.times{f.puts("changed")}}
|
496
|
-
## バックアップ同期する
|
497
|
-
#rsync.sync("old","new",{:backup => true})
|
498
|
-
#p FileUtils.cmp("old/test.txt","new/test.txt") == true
|
499
|
-
## バックアップしたファイルがどうなっているか見る
|
500
|
-
#files = Dir.glob "./new/**/*"
|
501
|
-
#p old_content == open((files - ["./new/test.txt"]).first).read
|
502
|
-
#end
|
503
|
-
#end
|
data/rbsync.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rbsync}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["takuya"]
|
@@ -25,10 +25,9 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
27
|
"lib/rbsync.rb",
|
28
|
-
"new/test.txt",
|
29
|
-
"old/test.txt",
|
30
28
|
"rbsync.gemspec",
|
31
29
|
"test/helper.rb",
|
30
|
+
"test/test_progressbar.rb",
|
32
31
|
"test/test_rbsync.rb"
|
33
32
|
]
|
34
33
|
s.homepage = %q{http://github.com/takuya/rbsync}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
|
4
|
+
require 'stringio'
|
5
|
+
class TestProgressBar < Test::Unit::TestCase
|
6
|
+
def test_progress_bar_start
|
7
|
+
io = StringIO.new
|
8
|
+
prg= ProgressBar.new
|
9
|
+
prg.out = io
|
10
|
+
prg.show_percent = true
|
11
|
+
prg.size = 5
|
12
|
+
prg.start("downloading")
|
13
|
+
io.rewind
|
14
|
+
assert io.read == "downloading\n_____"
|
15
|
+
end
|
16
|
+
def test_progress_bar_end
|
17
|
+
io = StringIO.new
|
18
|
+
prg= ProgressBar.new
|
19
|
+
prg.out = io
|
20
|
+
prg.size = 10
|
21
|
+
prg.show_percent = true
|
22
|
+
prg.end("done")
|
23
|
+
io.rewind
|
24
|
+
assert io.read =="\r \r########## 100% done\n"
|
25
|
+
end
|
26
|
+
def test_progress_bar_progress_twice
|
27
|
+
io = StringIO.new
|
28
|
+
prg= ProgressBar.new
|
29
|
+
prg.out = io
|
30
|
+
prg.show_percent = true
|
31
|
+
prg.size = 10
|
32
|
+
prg.progress(40, "40/100")
|
33
|
+
prg.progress(50, "50/100")
|
34
|
+
io.rewind
|
35
|
+
assert io.read == "\r \r####______ 40% 40/100\r \r#####_____ 50% 50/100"
|
36
|
+
end
|
37
|
+
def test_progress_bar_progress_change_done_char
|
38
|
+
io = StringIO.new
|
39
|
+
prg= ProgressBar.new
|
40
|
+
prg.out = io
|
41
|
+
prg.bar_char_done = "="
|
42
|
+
prg.show_percent = true
|
43
|
+
prg.size = 10
|
44
|
+
prg.progress(40, "40/100")
|
45
|
+
prg.progress(50, "50/100")
|
46
|
+
io.rewind
|
47
|
+
assert io.read == "\r \r====______ 40% 40/100\r \r=====_____ 50% 50/100"
|
48
|
+
end
|
49
|
+
def test_progress_bar_progress_change_undone_char
|
50
|
+
io = StringIO.new
|
51
|
+
prg= ProgressBar.new
|
52
|
+
prg.out = io
|
53
|
+
prg.bar_char_done = "="
|
54
|
+
prg.bar_char_undone = "-"
|
55
|
+
prg.show_percent = true
|
56
|
+
prg.size = 10
|
57
|
+
prg.progress(40, "40/100")
|
58
|
+
prg.progress(50, "50/100")
|
59
|
+
io.rewind
|
60
|
+
assert io.read == "\r \r====------ 40% 40/100\r \r=====----- 50% 50/100"
|
61
|
+
end
|
62
|
+
def test_progress_bar_progress_out_range
|
63
|
+
begin
|
64
|
+
io = StringIO.new
|
65
|
+
prg= ProgressBar.new
|
66
|
+
prg.out = io
|
67
|
+
prg.progress(110, "110/100")
|
68
|
+
rescue => e
|
69
|
+
assert e.class == ArgumentError
|
70
|
+
end
|
71
|
+
end
|
72
|
+
def test_progress_bar_100_percent
|
73
|
+
io = StringIO.new
|
74
|
+
prg= ProgressBar.new
|
75
|
+
prg.out = io
|
76
|
+
prg.bar_char_done = "="
|
77
|
+
prg.bar_char_undone = "-"
|
78
|
+
prg.show_percent = true
|
79
|
+
prg.size = 5
|
80
|
+
prg.progress(100, "100/100")
|
81
|
+
io.rewind
|
82
|
+
assert io.read == "\r \r===== 100% 100/100"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbsync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 17
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 7
|
10
|
+
version: 0.0.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- takuya
|
@@ -96,10 +96,9 @@ files:
|
|
96
96
|
- Rakefile
|
97
97
|
- VERSION
|
98
98
|
- lib/rbsync.rb
|
99
|
-
- new/test.txt
|
100
|
-
- old/test.txt
|
101
99
|
- rbsync.gemspec
|
102
100
|
- test/helper.rb
|
101
|
+
- test/test_progressbar.rb
|
103
102
|
- test/test_rbsync.rb
|
104
103
|
has_rdoc: true
|
105
104
|
homepage: http://github.com/takuya/rbsync
|
data/new/test.txt
DELETED