encbs 0.2.1 → 0.2.2
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/Gemfile +1 -1
- data/VERSION +1 -1
- data/encbs.gemspec +10 -6
- data/lib/archive.rb +6 -5
- data/lib/backup/file_item/cloud.rb +9 -0
- data/lib/backup/file_item/local.rb +5 -1
- data/lib/backup/jar.rb +2 -2
- data/lib/backup.rb +3 -3
- data/lib/encbsconfig.rb +2 -2
- data/lib/helpers.rb +1 -1
- data/test/cloudrc.yml.example +4 -0
- data/test/fixtures/Encbsfile.example +14 -0
- data/test/helper.rb +2 -0
- data/test/test_archive.rb +41 -0
- data/test/test_backup_cloud.rb +43 -0
- data/test/{test_backup.rb → test_backup_local.rb} +48 -21
- data/test/test_config.rb +23 -0
- metadata +134 -88
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.2
|
data/encbs.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{encbs}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Timothy Klim"]
|
@@ -37,13 +37,17 @@ Gem::Specification.new do |s|
|
|
37
37
|
"lib/crypto.rb",
|
38
38
|
"lib/encbsconfig.rb",
|
39
39
|
"lib/helpers.rb",
|
40
|
+
"test/cloudrc.yml.example",
|
41
|
+
"test/fixtures/Encbsfile.example",
|
40
42
|
"test/fixtures/etc/.hide",
|
41
43
|
"test/fixtures/etc/root/file",
|
42
44
|
"test/fixtures/rsa_key.private",
|
43
45
|
"test/fixtures/rsa_key.public",
|
44
46
|
"test/helper.rb",
|
45
|
-
"test/
|
47
|
+
"test/test_archive.rb",
|
48
|
+
"test/test_backup_cloud.rb",
|
46
49
|
"test/test_backup_file_item.rb",
|
50
|
+
"test/test_backup_local.rb",
|
47
51
|
"test/test_backup_timestamp.rb",
|
48
52
|
"test/test_config.rb",
|
49
53
|
"test/test_crypto.rb"
|
@@ -51,7 +55,7 @@ Gem::Specification.new do |s|
|
|
51
55
|
s.homepage = %q{http://github.com/TimothyKlim/encbs}
|
52
56
|
s.licenses = ["MIT"]
|
53
57
|
s.require_paths = ["lib"]
|
54
|
-
s.rubygems_version = %q{1.
|
58
|
+
s.rubygems_version = %q{1.5.2}
|
55
59
|
s.summary = %q{Simple backup system for pushing into cloud}
|
56
60
|
|
57
61
|
if s.respond_to? :specification_version then
|
@@ -62,7 +66,7 @@ Gem::Specification.new do |s|
|
|
62
66
|
s.add_runtime_dependency(%q<slop>, [">= 0"])
|
63
67
|
s.add_runtime_dependency(%q<ruby-progressbar>, [">= 0"])
|
64
68
|
s.add_runtime_dependency(%q<lzoruby>, [">= 0"])
|
65
|
-
s.add_development_dependency(%q<rake>, ["
|
69
|
+
s.add_development_dependency(%q<rake>, ["~> 0.8"])
|
66
70
|
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
67
71
|
s.add_development_dependency(%q<jeweler>, [">= 1.6.0"])
|
68
72
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
@@ -71,7 +75,7 @@ Gem::Specification.new do |s|
|
|
71
75
|
s.add_dependency(%q<slop>, [">= 0"])
|
72
76
|
s.add_dependency(%q<ruby-progressbar>, [">= 0"])
|
73
77
|
s.add_dependency(%q<lzoruby>, [">= 0"])
|
74
|
-
s.add_dependency(%q<rake>, ["
|
78
|
+
s.add_dependency(%q<rake>, ["~> 0.8"])
|
75
79
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
76
80
|
s.add_dependency(%q<jeweler>, [">= 1.6.0"])
|
77
81
|
s.add_dependency(%q<rcov>, [">= 0"])
|
@@ -81,7 +85,7 @@ Gem::Specification.new do |s|
|
|
81
85
|
s.add_dependency(%q<slop>, [">= 0"])
|
82
86
|
s.add_dependency(%q<ruby-progressbar>, [">= 0"])
|
83
87
|
s.add_dependency(%q<lzoruby>, [">= 0"])
|
84
|
-
s.add_dependency(%q<rake>, ["
|
88
|
+
s.add_dependency(%q<rake>, ["~> 0.8"])
|
85
89
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
86
90
|
s.add_dependency(%q<jeweler>, [">= 1.6.0"])
|
87
91
|
s.add_dependency(%q<rcov>, [">= 0"])
|
data/lib/archive.rb
CHANGED
@@ -8,7 +8,7 @@ module GZIP
|
|
8
8
|
z.close
|
9
9
|
dst
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
def self.decompress string
|
13
13
|
zstream = Zlib::Inflate.new
|
14
14
|
buf = zstream.inflate string
|
@@ -22,11 +22,12 @@ class Archive
|
|
22
22
|
attr_reader :type
|
23
23
|
|
24
24
|
def initialize type
|
25
|
-
|
26
|
-
|
25
|
+
type = type.to_s
|
26
|
+
puts_fail "Unsupported type" unless %w[lzo gzip].include? type.downcase
|
27
|
+
instance_eval %{@type = #{type.upcase}}
|
27
28
|
end
|
28
|
-
|
29
|
+
|
29
30
|
def method_missing name, *args
|
30
31
|
StringIO.new @type.send(name, *args)
|
31
32
|
end
|
32
|
-
end
|
33
|
+
end
|
@@ -53,6 +53,15 @@ module Backup
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
def exists? file
|
57
|
+
try_to_work_with_cloud do
|
58
|
+
!@directory.files.all(
|
59
|
+
:prefix => file,
|
60
|
+
:max_keys => 1
|
61
|
+
).nil?
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
56
65
|
def read_file(file)
|
57
66
|
try_to_work_with_cloud do
|
58
67
|
file = delete_slashes(file)
|
@@ -15,10 +15,14 @@ module Backup
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
+
def exists? file
|
19
|
+
File.exists? file
|
20
|
+
end
|
21
|
+
|
18
22
|
def create_file_once file, data
|
19
23
|
data = data.read if data.is_a? File or data.is_a? StringIO
|
20
24
|
File.open(file, 'wb') do |f|
|
21
|
-
f.
|
25
|
+
f.print(data)
|
22
26
|
end unless File.exists?(file)
|
23
27
|
end
|
24
28
|
|
data/lib/backup/jar.rb
CHANGED
@@ -106,7 +106,7 @@ module Backup
|
|
106
106
|
:timestamp => @timestamp
|
107
107
|
})
|
108
108
|
File.open("/var/tmp/encbs.swap", "w") do |f|
|
109
|
-
f.
|
109
|
+
f.print @meta_index.to_yaml
|
110
110
|
end
|
111
111
|
|
112
112
|
puts
|
@@ -158,7 +158,7 @@ module Backup
|
|
158
158
|
|
159
159
|
class << self
|
160
160
|
def hash_to_path(file_item, root_path, hash)
|
161
|
-
file_item.read_file("#{root_path}/meta/jars/#{hash}")
|
161
|
+
file_item.read_file("#{root_path}/meta/jars/#{hash}")
|
162
162
|
rescue Errno::ENOENT
|
163
163
|
""
|
164
164
|
end
|
data/lib/backup.rb
CHANGED
@@ -111,13 +111,13 @@ module Backup
|
|
111
111
|
remote_path += "/#{@file_item.file_hash file}"
|
112
112
|
|
113
113
|
data = @file_item.read_file(remote_path)
|
114
|
-
data = @key.decrypt_from_stream data
|
114
|
+
data = @key.decrypt_from_stream data if @key
|
115
115
|
|
116
116
|
unless compression.nil?
|
117
|
-
data = compression.decompress(data
|
117
|
+
data = compression.decompress(data).read
|
118
118
|
end
|
119
119
|
|
120
|
-
f.
|
120
|
+
f.print data
|
121
121
|
end
|
122
122
|
|
123
123
|
file_ok = @file_item.stat(restore_file)[restore_file]
|
data/lib/encbsconfig.rb
CHANGED
@@ -34,7 +34,7 @@ class EncbsConfig
|
|
34
34
|
def increment!
|
35
35
|
@increment = true
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def use_compression attr
|
39
39
|
@compression = attr
|
40
40
|
end
|
@@ -58,7 +58,7 @@ class EncbsConfig
|
|
58
58
|
def verbose!
|
59
59
|
@verbose = true
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
def set_timeout attr
|
63
63
|
@timeout = attr
|
64
64
|
end
|
data/lib/helpers.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
add "~/.oh-my-zsh"
|
2
|
+
add "~/.zshrc"
|
3
|
+
aws_bucket "encbs"
|
4
|
+
aws_key "AWS_KEY"
|
5
|
+
aws_secret "AWS_SECRET"
|
6
|
+
colorize!
|
7
|
+
increment!
|
8
|
+
key_size 2048
|
9
|
+
public_key "~/rsa_key.pub"
|
10
|
+
purge!
|
11
|
+
set_timeout 1000
|
12
|
+
use_compression "gzip"
|
13
|
+
use_hostname "Yeah"
|
14
|
+
verbose!
|
data/test/helper.rb
CHANGED
@@ -0,0 +1,41 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
|
3
|
+
class TestArchive < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@original = "Yeah" * 100
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_gzip
|
9
|
+
gzip = Archive.new :gzip
|
10
|
+
|
11
|
+
compressed = (gzip.compress @original, 9).read
|
12
|
+
decompressed = (gzip.decompress compressed).read
|
13
|
+
|
14
|
+
assert compressed.length < @original.length
|
15
|
+
|
16
|
+
assert_equal @original, decompressed
|
17
|
+
|
18
|
+
assert_not_nil compressed
|
19
|
+
assert_not_nil decompressed
|
20
|
+
|
21
|
+
assert_not_equal @original, compressed
|
22
|
+
assert_not_equal decompressed, compressed
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_lzo
|
26
|
+
lzo = Archive.new :lzo
|
27
|
+
|
28
|
+
compressed = (lzo.compress @original, 9).read
|
29
|
+
decompressed = (lzo.decompress compressed).read
|
30
|
+
|
31
|
+
assert compressed.length < @original.length
|
32
|
+
|
33
|
+
assert_equal @original, decompressed
|
34
|
+
|
35
|
+
assert_not_nil compressed
|
36
|
+
assert_not_nil decompressed
|
37
|
+
|
38
|
+
assert_not_equal @original, compressed
|
39
|
+
assert_not_equal decompressed, compressed
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.expand_path('../helper', __FILE__)
|
2
|
+
require File.expand_path('../test_backup_local', __FILE__)
|
3
|
+
|
4
|
+
class TestCloudBackup < TestLocalBackup
|
5
|
+
def setup
|
6
|
+
@restore_path = File.expand_path("../fixtures/restore", __FILE__)
|
7
|
+
@hostname = Socket.gethostname
|
8
|
+
|
9
|
+
cloud_rc = YAML::load open(
|
10
|
+
File.expand_path "../cloudrc.yml", __FILE__
|
11
|
+
).read
|
12
|
+
|
13
|
+
@backups_path = cloud_rc["directory"]
|
14
|
+
@backup = Backup::Instance.new(
|
15
|
+
@backups_path,
|
16
|
+
true,
|
17
|
+
:key => cloud_rc["key"],
|
18
|
+
:secret => cloud_rc["secret"],
|
19
|
+
:bucket => cloud_rc["bucket"]
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
def teardown
|
24
|
+
FileUtils.rm_r @restore_path, :force => true
|
25
|
+
FileUtils.mkdir_p @restore_path
|
26
|
+
|
27
|
+
File.open(File.expand_path('../fixtures/etc/root/file', __FILE__), 'w') do |f|
|
28
|
+
f.puts "Root file\n"
|
29
|
+
end
|
30
|
+
|
31
|
+
@backup.file_item.delete_dir @backups_path
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_backup_attributes
|
35
|
+
assert_equal(
|
36
|
+
@backup.root_path,
|
37
|
+
"#{@backups_path}/#{@hostname}"
|
38
|
+
)
|
39
|
+
assert_equal @backup.hostname, @hostname
|
40
|
+
assert_equal @backup.file_item.class, Backup::FileItem::Cloud
|
41
|
+
assert_not_nil @backup.timestamp
|
42
|
+
end
|
43
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path('../helper', __FILE__)
|
2
2
|
|
3
|
-
class
|
3
|
+
class TestLocalBackup < Test::Unit::TestCase
|
4
4
|
def setup
|
5
5
|
@backups_path = File.expand_path("../fixtures/backups", __FILE__)
|
6
6
|
@restore_path = File.expand_path("../fixtures/restore", __FILE__)
|
@@ -25,11 +25,11 @@ class TestBackup < Test::Unit::TestCase
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def create_backup! increment = false
|
28
|
+
def create_backup! increment = false, purge = false
|
29
29
|
@local_path = File.expand_path('../fixtures/etc', __FILE__)
|
30
30
|
@local_path_hash = Digest::MD5.hexdigest @local_path
|
31
31
|
|
32
|
-
@timestamp = @backup.create! @local_path, increment,
|
32
|
+
@timestamp = @backup.create! @local_path, increment, purge
|
33
33
|
@back_path = "#{@backups_path}/#{@hostname}"
|
34
34
|
end
|
35
35
|
|
@@ -46,28 +46,55 @@ class TestBackup < Test::Unit::TestCase
|
|
46
46
|
def test_create
|
47
47
|
create_backup!
|
48
48
|
|
49
|
-
assert
|
50
|
-
assert
|
51
|
-
assert
|
52
|
-
assert File.exists?("#{@back_path}/meta/#{@local_path_hash}/#{@timestamp}.yml")
|
53
|
-
assert File.exists?("#{@back_path}/meta/jars")
|
54
|
-
assert File.exists?("#{@back_path}/meta/jars/#{@local_path_hash}")
|
55
|
-
assert File.exists?("#{@back_path}/#{@local_path_hash}")
|
49
|
+
assert @backup.file_item.exists?("#{@back_path}/meta/#{@local_path_hash}/#{@timestamp}.yml")
|
50
|
+
assert @backup.file_item.exists?("#{@back_path}/meta/jars/#{@local_path_hash}")
|
51
|
+
assert @backup.file_item.exists?("#{@back_path}/#{@local_path_hash}")
|
56
52
|
|
57
|
-
assert_equal "#{@local_path}/",
|
53
|
+
assert_equal "#{@local_path}/", @backup.file_item.read_file(
|
58
54
|
"#{@back_path}/meta/jars/#{@local_path_hash}"
|
59
|
-
)
|
55
|
+
)
|
60
56
|
|
61
|
-
meta_index = YAML::load
|
57
|
+
meta_index = YAML::load @backup.file_item.read_file(
|
62
58
|
"#{@back_path}/meta/#{@local_path_hash}/#{@timestamp}.yml"
|
63
|
-
)
|
59
|
+
)
|
64
60
|
|
65
61
|
assert meta_index.has_key? @local_path
|
66
62
|
|
67
63
|
root_file = File.expand_path '../fixtures/etc/root/file', __FILE__
|
68
|
-
assert_equal open(root_file).read,
|
64
|
+
assert_equal open(root_file).read, @backup.file_item.read_file(
|
69
65
|
"#{@back_path}/#{@local_path_hash}/#{@timestamp}/#{Digest::MD5.hexdigest root_file}"
|
70
|
-
)
|
66
|
+
)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_create_with_compress
|
70
|
+
@backup.compression = "gzip"
|
71
|
+
create_backup!
|
72
|
+
|
73
|
+
meta_index = YAML::load @backup.file_item.read_file(
|
74
|
+
"#{@back_path}/meta/#{@local_path_hash}/#{@timestamp}.yml"
|
75
|
+
)
|
76
|
+
|
77
|
+
assert meta_index.has_key? :compression
|
78
|
+
assert_equal meta_index[:compression], 'GZIP'
|
79
|
+
|
80
|
+
root_file = File.expand_path '../fixtures/etc/root/file', __FILE__
|
81
|
+
assert_not_equal open(root_file).read, @backup.file_item.read_file(
|
82
|
+
"#{@back_path}/#{@local_path_hash}/#{@timestamp}/#{Digest::MD5.hexdigest root_file}"
|
83
|
+
)
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_create_with_purge_previous
|
87
|
+
create_backup!
|
88
|
+
previous_timestamp = @timestamp.dup
|
89
|
+
|
90
|
+
sleep 1
|
91
|
+
create_backup! false, true
|
92
|
+
|
93
|
+
versions = @backup.jar_versions @local_path
|
94
|
+
|
95
|
+
assert_equal versions.length, 1
|
96
|
+
assert_equal versions.first, @timestamp
|
97
|
+
assert_not_equal @timestamp, previous_timestamp
|
71
98
|
end
|
72
99
|
|
73
100
|
def test_create_with_crypt
|
@@ -85,13 +112,13 @@ class TestBackup < Test::Unit::TestCase
|
|
85
112
|
root_file = File.expand_path '../fixtures/etc/root/file', __FILE__
|
86
113
|
root_file_content = open(root_file).read
|
87
114
|
|
88
|
-
root_file_crypt_content =
|
115
|
+
root_file_crypt_content = @backup.file_item.read_file(
|
89
116
|
"#{@back_path}/#{@local_path_hash}/#{@timestamp}/#{Digest::MD5.hexdigest root_file}"
|
90
|
-
)
|
117
|
+
)
|
91
118
|
|
92
119
|
assert_not_equal root_file_content, root_file_crypt_content
|
93
120
|
assert_equal root_file_content, private_key.decrypt_from_stream(
|
94
|
-
root_file_crypt_content
|
121
|
+
root_file_crypt_content
|
95
122
|
)
|
96
123
|
end
|
97
124
|
|
@@ -167,8 +194,8 @@ class TestBackup < Test::Unit::TestCase
|
|
167
194
|
root_file_content = open(root_file).read
|
168
195
|
|
169
196
|
assert_equal root_file_content, "Changed file\n"
|
170
|
-
assert_equal root_file_content,
|
197
|
+
assert_equal root_file_content, @backup.file_item.read_file(
|
171
198
|
"#{@back_path}/#{@local_path_hash}/#{@timestamp}/#{Digest::MD5.hexdigest root_file}"
|
172
|
-
)
|
199
|
+
)
|
173
200
|
end
|
174
201
|
end
|
data/test/test_config.rb
CHANGED
@@ -1,4 +1,27 @@
|
|
1
1
|
require File.expand_path('../helper', __FILE__)
|
2
2
|
|
3
3
|
class TestConfig < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@config = EncbsConfig.new
|
6
|
+
@config.load File.expand_path('../fixtures/Encbsfile.example', __FILE__)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_load
|
10
|
+
assert @config.colorize
|
11
|
+
assert @config.increment
|
12
|
+
assert @config.paths.include?('~/.oh-my-zsh')
|
13
|
+
assert @config.paths.include?('~/.zshrc')
|
14
|
+
assert @config.verbose
|
15
|
+
|
16
|
+
assert_nil @config.purge
|
17
|
+
|
18
|
+
assert_equal @config.bucket, 'encbs'
|
19
|
+
assert_equal @config.compression, 'gzip'
|
20
|
+
assert_equal @config.hostname, 'Yeah'
|
21
|
+
assert_equal @config.key, 'AWS_KEY'
|
22
|
+
assert_equal @config.secret, 'AWS_SECRET'
|
23
|
+
assert_equal @config.size, 2048
|
24
|
+
assert_equal @config.timeout, 1000
|
25
|
+
assert_equal @config.token, '~/rsa_key.pub'
|
26
|
+
end
|
4
27
|
end
|
metadata
CHANGED
@@ -1,114 +1,150 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: encbs
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
- 2
|
10
|
+
version: 0.2.2
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Timothy Klim
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
17
|
+
|
18
|
+
date: 2011-06-04 00:00:00 +04:00
|
13
19
|
default_executable: encbs
|
14
|
-
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
prerelease: false
|
23
|
+
type: :runtime
|
16
24
|
name: fog
|
17
|
-
|
25
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
18
26
|
none: false
|
19
|
-
requirements:
|
20
|
-
- -
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
|
23
|
-
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
34
|
+
requirement: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
24
36
|
prerelease: false
|
25
|
-
|
26
|
-
- !ruby/object:Gem::Dependency
|
37
|
+
type: :runtime
|
27
38
|
name: slop
|
28
|
-
|
39
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
29
40
|
none: false
|
30
|
-
requirements:
|
31
|
-
- -
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
|
34
|
-
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
requirement: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
35
50
|
prerelease: false
|
36
|
-
|
37
|
-
- !ruby/object:Gem::Dependency
|
51
|
+
type: :runtime
|
38
52
|
name: ruby-progressbar
|
39
|
-
|
53
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
40
54
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
requirement: *id003
|
63
|
+
- !ruby/object:Gem::Dependency
|
46
64
|
prerelease: false
|
47
|
-
|
48
|
-
- !ruby/object:Gem::Dependency
|
65
|
+
type: :runtime
|
49
66
|
name: lzoruby
|
50
|
-
|
67
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
51
68
|
none: false
|
52
|
-
requirements:
|
53
|
-
- -
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
|
56
|
-
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
requirement: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
57
78
|
prerelease: false
|
58
|
-
|
59
|
-
- !ruby/object:Gem::Dependency
|
79
|
+
type: :development
|
60
80
|
name: rake
|
61
|
-
|
81
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
|
-
requirements:
|
64
|
-
- -
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
|
67
|
-
|
83
|
+
requirements:
|
84
|
+
- - ~>
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 27
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
- 8
|
90
|
+
version: "0.8"
|
91
|
+
requirement: *id005
|
92
|
+
- !ruby/object:Gem::Dependency
|
68
93
|
prerelease: false
|
69
|
-
|
70
|
-
- !ruby/object:Gem::Dependency
|
94
|
+
type: :development
|
71
95
|
name: bundler
|
72
|
-
|
96
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
73
97
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
98
|
+
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
hash: 23
|
102
|
+
segments:
|
103
|
+
- 1
|
104
|
+
- 0
|
105
|
+
- 0
|
77
106
|
version: 1.0.0
|
78
|
-
|
107
|
+
requirement: *id006
|
108
|
+
- !ruby/object:Gem::Dependency
|
79
109
|
prerelease: false
|
80
|
-
|
81
|
-
- !ruby/object:Gem::Dependency
|
110
|
+
type: :development
|
82
111
|
name: jeweler
|
83
|
-
|
112
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
84
113
|
none: false
|
85
|
-
requirements:
|
86
|
-
- -
|
87
|
-
- !ruby/object:Gem::Version
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
hash: 15
|
118
|
+
segments:
|
119
|
+
- 1
|
120
|
+
- 6
|
121
|
+
- 0
|
88
122
|
version: 1.6.0
|
89
|
-
|
123
|
+
requirement: *id007
|
124
|
+
- !ruby/object:Gem::Dependency
|
90
125
|
prerelease: false
|
91
|
-
|
92
|
-
- !ruby/object:Gem::Dependency
|
126
|
+
type: :development
|
93
127
|
name: rcov
|
94
|
-
|
128
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
95
129
|
none: false
|
96
|
-
requirements:
|
97
|
-
- -
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
hash: 3
|
134
|
+
segments:
|
135
|
+
- 0
|
136
|
+
version: "0"
|
137
|
+
requirement: *id008
|
103
138
|
description: Simple backup system for pushing into cloud
|
104
139
|
email: klimtimothy@gmail.com
|
105
|
-
executables:
|
140
|
+
executables:
|
106
141
|
- encbs
|
107
142
|
extensions: []
|
108
|
-
|
143
|
+
|
144
|
+
extra_rdoc_files:
|
109
145
|
- LICENSE.txt
|
110
146
|
- README.rdoc
|
111
|
-
files:
|
147
|
+
files:
|
112
148
|
- Gemfile
|
113
149
|
- LICENSE.txt
|
114
150
|
- README.rdoc
|
@@ -127,43 +163,53 @@ files:
|
|
127
163
|
- lib/crypto.rb
|
128
164
|
- lib/encbsconfig.rb
|
129
165
|
- lib/helpers.rb
|
166
|
+
- test/cloudrc.yml.example
|
167
|
+
- test/fixtures/Encbsfile.example
|
130
168
|
- test/fixtures/etc/.hide
|
131
169
|
- test/fixtures/etc/root/file
|
132
170
|
- test/fixtures/rsa_key.private
|
133
171
|
- test/fixtures/rsa_key.public
|
134
172
|
- test/helper.rb
|
135
|
-
- test/
|
173
|
+
- test/test_archive.rb
|
174
|
+
- test/test_backup_cloud.rb
|
136
175
|
- test/test_backup_file_item.rb
|
176
|
+
- test/test_backup_local.rb
|
137
177
|
- test/test_backup_timestamp.rb
|
138
178
|
- test/test_config.rb
|
139
179
|
- test/test_crypto.rb
|
140
180
|
has_rdoc: true
|
141
181
|
homepage: http://github.com/TimothyKlim/encbs
|
142
|
-
licenses:
|
182
|
+
licenses:
|
143
183
|
- MIT
|
144
184
|
post_install_message:
|
145
185
|
rdoc_options: []
|
146
|
-
|
186
|
+
|
187
|
+
require_paths:
|
147
188
|
- lib
|
148
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
189
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
149
190
|
none: false
|
150
|
-
requirements:
|
151
|
-
- -
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
|
154
|
-
segments:
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
hash: 3
|
195
|
+
segments:
|
155
196
|
- 0
|
156
|
-
|
157
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
|
+
version: "0"
|
198
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
199
|
none: false
|
159
|
-
requirements:
|
160
|
-
- -
|
161
|
-
- !ruby/object:Gem::Version
|
162
|
-
|
200
|
+
requirements:
|
201
|
+
- - ">="
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
hash: 3
|
204
|
+
segments:
|
205
|
+
- 0
|
206
|
+
version: "0"
|
163
207
|
requirements: []
|
208
|
+
|
164
209
|
rubyforge_project:
|
165
|
-
rubygems_version: 1.
|
210
|
+
rubygems_version: 1.5.2
|
166
211
|
signing_key:
|
167
212
|
specification_version: 3
|
168
213
|
summary: Simple backup system for pushing into cloud
|
169
214
|
test_files: []
|
215
|
+
|