Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

Version 0.1.9

Adding --reverse option
  • Loading branch information...
commit 4c0a3bb0bcb529249d834223850f59d02824667f 1 parent fb7198b
Winton Welsh authored February 03, 2011
2  bin/rbackup
@@ -3,4 +3,4 @@
3 3
 $:.push File.expand_path("#{File.dirname(__FILE__)}/../lib")
4 4
 require 'rbackup'
5 5
 
6  
-RBackup.new(*ARGV).run
  6
+RBackup.new(ARGV.delete('--reverse'), *ARGV).run
2  gemspec.rb
@@ -16,5 +16,5 @@
16 16
   s.name = GEM_NAME
17 17
   s.platform = Gem::Platform::RUBY
18 18
   s.require_path = "lib"
19  
-  s.version = "0.1.8"
  19
+  s.version = "0.1.9"
20 20
 end
16  lib/rbackup.rb
@@ -15,7 +15,8 @@ class RBackup
15 15
   
16 16
   attr_accessor :profiles, :yaml
17 17
   
18  
-  def initialize(*args)
  18
+  def initialize(reverse, *args)
  19
+    @reverse = reverse
19 20
     get_yaml
20 21
     get_profiles(args, @yaml)
21 22
   end
@@ -38,8 +39,8 @@ def get_profiles(input, hash, force=false)
38 39
   end
39 40
   
40 41
   def get_yaml
41  
-    if $TESTING
42  
-      config = SPEC + '/fixtures/rbackup.yml'
  42
+    if $rbackup_config
  43
+      config = $rbackup_config
43 44
     else
44 45
       config = File.expand_path("~/.rbackup.yml")
45 46
     end
@@ -66,7 +67,14 @@ def rsync(profile)
66 67
     inc1ude = []
67 68
     exclude = []
68 69
     destination = profile['destination']
69  
-    source = [ profile['source'] ].flatten
  70
+    source = profile['source']
  71
+    
  72
+    if @reverse
  73
+      last = source.split('/').last
  74
+      source = source.split('/')[0..-2].join('/')
  75
+      destination = [ destination, '/', last ].join('/')
  76
+      destination, source = source, destination
  77
+    end
70 78
 
71 79
     options = "--numeric-ids --safe-links -axzSvL"
72 80
     # --numeric-ids               don't map uid/gid values by user/group name
27  spec/fixtures/rbackup_reverse.yml
... ...
@@ -0,0 +1,27 @@
  1
+profile_1:
  2
+  source: SPEC/fixtures/destination/*
  3
+  destination: SPEC/fixtures/source
  4
+  exclude: 1.txt
  5
+profile_2:
  6
+  source: SPEC/fixtures/destination/*
  7
+  destination: SPEC/fixtures/source
  8
+  exclude: 2.txt
  9
+profile_3:
  10
+  profile_4:
  11
+    source: SPEC/fixtures/destination/*
  12
+    destination: SPEC/fixtures/source
  13
+    exclude:
  14
+      - 1.txt
  15
+      - 2.txt
  16
+  profile_5:
  17
+    source: SPEC/fixtures/destination/*
  18
+    destination: SPEC/fixtures/source
  19
+    exclude:
  20
+      - 1.txt
  21
+      - 3.txt
  22
+  profile_6:
  23
+    source: SPEC/fixtures/destination/*
  24
+    destination: SPEC/fixtures/source
  25
+    include:
  26
+      - 2.txt
  27
+      - 3.txt
97  spec/rbackup_spec.rb
... ...
@@ -1,55 +1,64 @@
1 1
 require File.expand_path("#{File.dirname(__FILE__)}/spec_helper")
2 2
 
3 3
 describe RBackup do
4  
-  before(:each) do
5  
-    Dir[SPEC + '/fixtures/destination/*'].each do |path|
6  
-      FileUtils.rm_rf(path)
  4
+  [ :normal, :reverse ].each do |type|
  5
+    before(:each) do
  6
+      if type == :normal
  7
+        $rbackup_config = SPEC + '/fixtures/rbackup.yml'
  8
+        @reverse = false
  9
+      else
  10
+        $rbackup_config = SPEC + '/fixtures/rbackup_reverse.yml'
  11
+        @reverse = true
  12
+      end
  13
+      Dir[SPEC + '/fixtures/destination/*'].each do |path|
  14
+        FileUtils.rm_rf(path)
  15
+      end
7 16
     end
8  
-  end
9 17
   
10  
-  it "should backup all profiles" do
11  
-    RBackup.new.run
12  
-    File.exists?(SPEC + '/fixtures/destination/1.txt').should == true
13  
-    File.exists?(SPEC + '/fixtures/destination/2.txt').should == true
14  
-    File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
15  
-    File.read(SPEC + '/fixtures/destination/1.txt').should == '1'
16  
-    File.read(SPEC + '/fixtures/destination/2.txt').should == '2'
17  
-    File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
18  
-  end
  18
+    it "should backup all profiles" do
  19
+      RBackup.new(@reverse).run
  20
+      File.exists?(SPEC + '/fixtures/destination/1.txt').should == true
  21
+      File.exists?(SPEC + '/fixtures/destination/2.txt').should == true
  22
+      File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
  23
+      File.read(SPEC + '/fixtures/destination/1.txt').should == '1'
  24
+      File.read(SPEC + '/fixtures/destination/2.txt').should == '2'
  25
+      File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
  26
+    end
19 27
   
20  
-  it "should backup profile_1" do
21  
-    RBackup.new('profile_1').run
22  
-    File.exists?(SPEC + '/fixtures/destination/1.txt').should == false
23  
-    File.exists?(SPEC + '/fixtures/destination/2.txt').should == true
24  
-    File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
25  
-    File.read(SPEC + '/fixtures/destination/2.txt').should == '2'
26  
-    File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
27  
-  end
  28
+    it "should backup profile_1" do
  29
+      RBackup.new(@reverse, 'profile_1').run
  30
+      File.exists?(SPEC + '/fixtures/destination/1.txt').should == false
  31
+      File.exists?(SPEC + '/fixtures/destination/2.txt').should == true
  32
+      File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
  33
+      File.read(SPEC + '/fixtures/destination/2.txt').should == '2'
  34
+      File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
  35
+    end
28 36
   
29  
-  it "should backup profile_2" do
30  
-    RBackup.new('profile_2').run
31  
-    File.exists?(SPEC + '/fixtures/destination/1.txt').should == true
32  
-    File.exists?(SPEC + '/fixtures/destination/2.txt').should == false
33  
-    File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
34  
-    File.read(SPEC + '/fixtures/destination/1.txt').should == '1'
35  
-    File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
36  
-  end
  37
+    it "should backup profile_2" do
  38
+      RBackup.new(@reverse, 'profile_2').run
  39
+      File.exists?(SPEC + '/fixtures/destination/1.txt').should == true
  40
+      File.exists?(SPEC + '/fixtures/destination/2.txt').should == false
  41
+      File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
  42
+      File.read(SPEC + '/fixtures/destination/1.txt').should == '1'
  43
+      File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
  44
+    end
37 45
   
38  
-  it "should backup profile_3" do
39  
-    RBackup.new('profile_3').run
40  
-    File.exists?(SPEC + '/fixtures/destination/1.txt').should == false
41  
-    File.exists?(SPEC + '/fixtures/destination/2.txt').should == true
42  
-    File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
43  
-    File.read(SPEC + '/fixtures/destination/2.txt').should == '2'
44  
-    File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
45  
-  end
  46
+    it "should backup profile_3" do
  47
+      RBackup.new(@reverse, 'profile_3').run
  48
+      File.exists?(SPEC + '/fixtures/destination/1.txt').should == false
  49
+      File.exists?(SPEC + '/fixtures/destination/2.txt').should == true
  50
+      File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
  51
+      File.read(SPEC + '/fixtures/destination/2.txt').should == '2'
  52
+      File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
  53
+    end
46 54
   
47  
-  it "should backup profile_6" do
48  
-    RBackup.new('profile_6').run
49  
-    File.exists?(SPEC + '/fixtures/destination/1.txt').should == false
50  
-    File.exists?(SPEC + '/fixtures/destination/2.txt').should == true
51  
-    File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
52  
-    File.read(SPEC + '/fixtures/destination/2.txt').should == '2'
53  
-    File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
  55
+    it "should backup profile_6" do
  56
+      RBackup.new(@reverse, 'profile_6').run
  57
+      File.exists?(SPEC + '/fixtures/destination/1.txt').should == false
  58
+      File.exists?(SPEC + '/fixtures/destination/2.txt').should == true
  59
+      File.exists?(SPEC + '/fixtures/destination/3.txt').should == true
  60
+      File.read(SPEC + '/fixtures/destination/2.txt').should == '2'
  61
+      File.read(SPEC + '/fixtures/destination/3.txt').should == '3'
  62
+    end
54 63
   end
55 64
 end

0 notes on commit 4c0a3bb

Please sign in to comment.
Something went wrong with that request. Please try again.