rsync 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +9 -1
- data/lib/rsync.rb +5 -4
- data/lib/rsync/command.rb +5 -7
- data/lib/rsync/result.rb +10 -4
- data/lib/rsync/version.rb +1 -1
- data/spec/rsync/command_spec.rb +7 -0
- data/spec/rsync/result_spec.rb +24 -0
- metadata +11 -7
data/README.md
CHANGED
@@ -8,9 +8,17 @@ Ruby/Rsync is a Ruby library that can syncronize files between remote hosts by w
|
|
8
8
|
|
9
9
|
## Usage
|
10
10
|
|
11
|
+
Minimal example
|
12
|
+
|
13
|
+
require "rsync"
|
14
|
+
|
15
|
+
result = Rsync.run("/path/to/src", "/path/to/dest")
|
16
|
+
|
17
|
+
Complete example
|
18
|
+
|
11
19
|
require "rsync"
|
12
20
|
|
13
|
-
Rsync.
|
21
|
+
Rsync.run("/path/to/src", "/path/to/dest") do |result|
|
14
22
|
if result.success?
|
15
23
|
result.changes.each do |change|
|
16
24
|
puts "#{change.filename} (#{change.summary})"
|
data/lib/rsync.rb
CHANGED
@@ -5,12 +5,13 @@ require "rsync/result"
|
|
5
5
|
# The main interface to rsync
|
6
6
|
module Rsync
|
7
7
|
# Creates and runs an rsync {Command} and return the {Result}
|
8
|
+
# @param source {String}
|
9
|
+
# @param destination {String}
|
10
|
+
# @param args {Array}
|
8
11
|
# @return {Result}
|
9
12
|
# @yield {Result}
|
10
|
-
def self.
|
11
|
-
|
12
|
-
exitcode = $?
|
13
|
-
result = Result.new(output, exitcode)
|
13
|
+
def self.run(source, destination, args = [], &block)
|
14
|
+
result = Command.run(source, destination, args)
|
14
15
|
yield(result) if block_given?
|
15
16
|
result
|
16
17
|
end
|
data/lib/rsync/command.rb
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
module Rsync
|
2
2
|
# An rsync command to be run
|
3
3
|
class Command
|
4
|
-
def initialize(args)
|
5
|
-
@args = args.join(" ")
|
6
|
-
end
|
7
|
-
|
8
4
|
# Runs the rsync job and returns the results
|
9
5
|
#
|
6
|
+
# @param args {Array}
|
10
7
|
# @return {Result}
|
11
|
-
def run
|
12
|
-
run_command("rsync --itemize-changes #{
|
8
|
+
def self.run(*args)
|
9
|
+
output = run_command("rsync --itemize-changes #{args.join(" ")}")
|
10
|
+
Result.new(output, $?.exitstatus)
|
13
11
|
end
|
14
12
|
|
15
13
|
private
|
16
14
|
|
17
|
-
def run_command(cmd, &block)
|
15
|
+
def self.run_command(cmd, &block)
|
18
16
|
if block_given?
|
19
17
|
IO.popen("#{cmd} 2>&1", &block)
|
20
18
|
else
|
data/lib/rsync/result.rb
CHANGED
@@ -10,15 +10,15 @@ module Rsync
|
|
10
10
|
end
|
11
11
|
|
12
12
|
# Whether the rsync job was run without errors.
|
13
|
-
# @return Boolean
|
13
|
+
# @return {Boolean}
|
14
14
|
def success?
|
15
15
|
@exitcode.to_i == 0
|
16
16
|
end
|
17
17
|
|
18
18
|
# The error message based on exit code.
|
19
|
-
# @return String
|
19
|
+
# @return {String}
|
20
20
|
def error
|
21
|
-
case @exitcode.
|
21
|
+
case @exitcode.to_i
|
22
22
|
when 0
|
23
23
|
"Success"
|
24
24
|
when 1
|
@@ -68,10 +68,16 @@ module Rsync
|
|
68
68
|
#
|
69
69
|
# @return {Array<Change>}
|
70
70
|
def changes
|
71
|
+
change_list
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def change_list
|
71
77
|
list = []
|
72
78
|
@raw.split("\n").each do |line|
|
73
79
|
#if line =~ /^([<>ch.*][fdLDS][ .+\?cstTpoguax]{9}) (.*)$/
|
74
|
-
if line =~ /^([<>ch
|
80
|
+
if line =~ /^([<>ch\.\*].{10}) (.*)$/
|
75
81
|
detail = Change.new(line)
|
76
82
|
list << detail if detail.changed?
|
77
83
|
end
|
data/lib/rsync/version.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rsync/result'
|
2
|
+
|
3
|
+
describe Rsync::Result do
|
4
|
+
it "should handle basic example" do
|
5
|
+
result = Rsync::Result.new("", 0)
|
6
|
+
result.changes.should eql([])
|
7
|
+
result.error.should eql("Success")
|
8
|
+
result.success?.should eql(true)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should handle basic example with changes" do
|
12
|
+
result = Rsync::Result.new(">f......... filename\n", 0)
|
13
|
+
result.changes.length.should eql(1)
|
14
|
+
result.error.should eql("Success")
|
15
|
+
result.success?.should eql(true)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should handle syntax error" do
|
19
|
+
result = Rsync::Result.new("", 1)
|
20
|
+
result.changes.should eql([])
|
21
|
+
result.error.should eql("Syntax or usage error")
|
22
|
+
result.success?.should eql(false)
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rsync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2013-07-24 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
|
-
requirement: &
|
16
|
+
requirement: &13436720 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.3'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *13436720
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &13435920 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *13435920
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &13434940 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *13434940
|
47
47
|
description:
|
48
48
|
email:
|
49
49
|
- jbussdieker@gmail.com
|
@@ -64,6 +64,8 @@ files:
|
|
64
64
|
- lib/rsync/version.rb
|
65
65
|
- rsync.gemspec
|
66
66
|
- spec/rsync/change_spec.rb
|
67
|
+
- spec/rsync/command_spec.rb
|
68
|
+
- spec/rsync/result_spec.rb
|
67
69
|
homepage: http://github.com/jbussdieker/ruby-rsync
|
68
70
|
licenses:
|
69
71
|
- MIT
|
@@ -92,4 +94,6 @@ summary: Ruby/Rsync is a Ruby library that can syncronize files between remote h
|
|
92
94
|
by wrapping a call to the rsync binary.
|
93
95
|
test_files:
|
94
96
|
- spec/rsync/change_spec.rb
|
97
|
+
- spec/rsync/command_spec.rb
|
98
|
+
- spec/rsync/result_spec.rb
|
95
99
|
has_rdoc:
|