backup 3.0.4 → 3.0.5

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 CHANGED
@@ -3,7 +3,7 @@
3
3
  source 'http://rubygems.org'
4
4
 
5
5
  ##
6
- # Bundle gems definde inside the gemspec file
6
+ # Bundle gems defined inside the gemspec file
7
7
  gemspec
8
8
 
9
9
  ##
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- backup (3.0.4)
4
+ backup (3.0.5)
5
5
  dropbox (~> 1.2.3)
6
6
  fog (~> 0.5.3)
7
7
  mail (~> 2.2.15)
@@ -12,6 +12,10 @@ module Backup
12
12
  # Stores an array of different paths/files to store
13
13
  attr_accessor :paths
14
14
 
15
+ ##
16
+ # Stores an array of different paths/files to exclude
17
+ attr_accessor :excludes
18
+
15
19
  ##
16
20
  # Stores the path to the archive directory
17
21
  attr_accessor :archive_path
@@ -21,6 +25,7 @@ module Backup
21
25
  def initialize(name, &block)
22
26
  @name = name.to_sym
23
27
  @paths = Array.new
28
+ @excludes = Array.new
24
29
  @archive_path = File.join(TMP_PATH, TRIGGER, 'archive')
25
30
 
26
31
  instance_eval(&block)
@@ -32,13 +37,19 @@ module Backup
32
37
  @paths << path
33
38
  end
34
39
 
40
+ ##
41
+ # Adds new paths to the @excludes instance variable array
42
+ def exclude(path)
43
+ @excludes << path
44
+ end
45
+
35
46
  ##
36
47
  # Archives all the provided paths in to a single .tar file
37
48
  # and places that .tar file in the folder which later will be packaged
38
49
  def perform!
39
50
  mkdir(archive_path)
40
51
  Logger.message("#{ self.class } started packaging and archiving #{ paths.map { |path| "\"#{path}\""}.join(", ") }.")
41
- run("#{ utility(:tar) } -c #{ paths_to_package } 1> '#{ File.join(archive_path, "#{name}.tar") }' 2> /dev/null")
52
+ run("#{ utility(:tar) } -c #{ paths_to_exclude } #{ paths_to_package } 1> '#{ File.join(archive_path, "#{name}.tar") }' 2> /dev/null")
42
53
  end
43
54
 
44
55
  private
@@ -50,5 +61,13 @@ module Backup
50
61
  "'#{path}'"
51
62
  end.join("\s")
52
63
  end
64
+
65
+ ##
66
+ # Returns a "tar-ready" string of all the specified excludes combined
67
+ def paths_to_exclude
68
+ if excludes.any?
69
+ "--exclude={" + excludes.map{ |e| "'#{e}'" }.join(",") + "}"
70
+ end
71
+ end
53
72
  end
54
73
  end
@@ -13,7 +13,7 @@ module Backup
13
13
  # Defines the minor version
14
14
  # PATCH:
15
15
  # Defines the patch version
16
- MAJOR, MINOR, PATCH = 3, 0, 4
16
+ MAJOR, MINOR, PATCH = 3, 0, 5
17
17
 
18
18
  ##
19
19
  # Returns the major version ( big release based off of multiple minor releases )
data/spec/archive_spec.rb CHANGED
@@ -9,6 +9,8 @@ describe Backup::Archive do
9
9
  a.add '/home/rspecuser/somefile'
10
10
  a.add '/home/rspecuser/logs/'
11
11
  a.add '/home/rspecuser/dotfiles/'
12
+ a.exclude '/home/rspecuser/excludefile'
13
+ a.exclude '/home/rspecuser/excludedir/'
12
14
  end
13
15
  end
14
16
 
@@ -17,10 +19,19 @@ describe Backup::Archive do
17
19
  archive.paths.count.should == 0
18
20
  end
19
21
 
22
+ it 'should have no excludes' do
23
+ archive = Backup::Archive.new(:dummy_archive) { |a| }
24
+ archive.excludes.count.should == 0
25
+ end
26
+
20
27
  it 'should have 3 paths' do
21
28
  archive.paths.count.should == 3
22
29
  end
23
30
 
31
+ it 'should have 2 excludes' do
32
+ archive.excludes.count.should == 2
33
+ end
34
+
24
35
  it do
25
36
  archive.name.should == :dummy_archive
26
37
  end
@@ -32,17 +43,43 @@ describe Backup::Archive do
32
43
  end
33
44
  end
34
45
 
46
+ describe '#paths_to_exclude' do
47
+ it 'should be empty' do
48
+ archive = Backup::Archive.new(:dummy_archive) { |a| }
49
+ archive.send(:paths_to_exclude).should be_nil
50
+ end
51
+
52
+ it 'should return a tar -c friendly string' do
53
+ archive.send(:paths_to_exclude).should ==
54
+ "--exclude={'/home/rspecuser/excludefile','/home/rspecuser/excludedir/'}"
55
+ end
56
+ end
57
+
35
58
  describe '#perform!' do
36
59
  before do
37
60
  [:mkdir, :run, :utility].each { |method| archive.stubs(method) }
38
61
  Backup::Logger.stubs(:message)
39
62
  end
40
63
 
41
- it 'should tar all the specified paths' do
42
- archive.expects(:mkdir).with(File.join(Backup::TMP_PATH, Backup::TRIGGER, 'archive'))
43
- archive.expects(:run).with("tar -c '/home/rspecuser/somefile' '/home/rspecuser/logs/' '/home/rspecuser/dotfiles/' 1> '#{File.join(Backup::TMP_PATH, Backup::TRIGGER, 'archive', "#{:dummy_archive}.tar")}' 2> /dev/null")
44
- archive.expects(:utility).with(:tar).returns(:tar)
45
- archive.perform!
64
+ context 'when both paths were added and paths that should be excluded were added' do
65
+ it 'should render both the syntax for the paths that be included as well as excluded' do
66
+ archive.expects(:mkdir).with(File.join(Backup::TMP_PATH, Backup::TRIGGER, 'archive'))
67
+ archive.expects(:run).with("tar -c --exclude={'/home/rspecuser/excludefile','/home/rspecuser/excludedir/'} '/home/rspecuser/somefile' '/home/rspecuser/logs/' '/home/rspecuser/dotfiles/' 1> '#{File.join(Backup::TMP_PATH, Backup::TRIGGER, 'archive', "#{:dummy_archive}.tar")}' 2> /dev/null")
68
+ archive.expects(:utility).with(:tar).returns(:tar)
69
+ archive.perform!
70
+ end
71
+ end
72
+
73
+ context 'when there are paths to add, and no exclude patterns were defined' do
74
+ it 'should only render syntax for the defined paths' do
75
+ archive = Backup::Archive.new(:dummy_archive) do |a|
76
+ a.add '/path/to/archive'
77
+ end
78
+
79
+ archive.stubs(:utility).returns(:tar)
80
+ archive.expects(:run).with("tar -c '/path/to/archive' 1> '#{File.join(Backup::TMP_PATH, Backup::TRIGGER, 'archive', "#{:dummy_archive}.tar")}' 2> /dev/null")
81
+ archive.perform!
82
+ end
46
83
  end
47
84
 
48
85
  it 'should log the status' do
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: backup
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 3.0.4
5
+ version: 3.0.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Michael van Rooijen
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-13 00:00:00 +01:00
13
+ date: 2011-03-14 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency