robinsp-backitup 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest CHANGED
@@ -1,18 +1,20 @@
1
- bin/backitup
2
1
  sample.backitup
3
- spec/test-config.backitup
4
- spec/file_packager_spec.rb
5
- spec/config_spec.rb
6
- spec/runner_spec.rb
7
- spec/file_list_spec.rb
8
- spec/spec.opts
9
- spec/spec_helper.rb
10
- Rakefile
11
2
  lib/back_it_up.rb
12
3
  lib/back_it_up/config.rb
4
+ lib/back_it_up/runner.rb
5
+ lib/back_it_up/command.rb
6
+ lib/back_it_up/ftp.rb
13
7
  lib/back_it_up/file_list.rb
14
8
  lib/back_it_up/file_packager.rb
15
- lib/back_it_up/command.rb
16
- lib/back_it_up/runner.rb
17
9
  README.rdoc
10
+ Rakefile
11
+ spec/test-config.backitup
12
+ spec/file_list_spec.rb
13
+ spec/spec_helper.rb
14
+ spec/runner_spec.rb
15
+ spec/spec.opts
16
+ spec/file_packager_spec.rb
17
+ spec/ftp_spec.rb
18
+ spec/config_spec.rb
19
+ bin/backitup
18
20
  Manifest
data/README.rdoc CHANGED
@@ -1,6 +1,7 @@
1
1
  = BackItUp
2
2
 
3
- <em>This is still in the workings and right now it is only an advanced zip file creator.</em>
3
+ Simple tool to easily configure the files and directories to copy to a local zip file
4
+ and FTP (optional) to a remote host.
4
5
 
5
6
  == Install
6
7
 
@@ -29,6 +30,8 @@ Create a backup script looking something like this
29
30
  dir "~/Desktop/drop-in-me-for-backup"
30
31
 
31
32
  destination_file "/tmp/backupfile"
33
+
34
+ ftp 'host.domain.com', 'username', 'password', :remote_dir => 'backups'
32
35
  end
33
36
 
34
37
  Run *backitup* with your script file as argument
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'spec'
2
2
  require 'spec/rake/spectask'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('backitup', '0.0.2') do |p|
5
+ Echoe.new('backitup', '0.0.3') do |p|
6
6
  p.description = "Simple backup tool"
7
7
  p.url = "http://github.com/robinsp/backitup"
8
8
  p.author = "Robin Spainhour"
data/backitup.gemspec CHANGED
@@ -2,28 +2,28 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{backitup}
5
- s.version = "0.0.2"
5
+ s.version = "0.0.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Robin Spainhour"]
9
- s.date = %q{2009-05-28}
9
+ s.date = %q{2009-05-29}
10
10
  s.default_executable = %q{backitup}
11
11
  s.description = %q{Simple backup tool}
12
12
  s.email = %q{robin@robinspainhour.com}
13
13
  s.executables = ["backitup"]
14
- s.extra_rdoc_files = ["bin/backitup", "lib/back_it_up.rb", "lib/back_it_up/config.rb", "lib/back_it_up/file_list.rb", "lib/back_it_up/file_packager.rb", "lib/back_it_up/command.rb", "lib/back_it_up/runner.rb", "README.rdoc"]
15
- s.files = ["bin/backitup", "sample.backitup", "spec/test-config.backitup", "spec/file_packager_spec.rb", "spec/config_spec.rb", "spec/runner_spec.rb", "spec/file_list_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "Rakefile", "lib/back_it_up.rb", "lib/back_it_up/config.rb", "lib/back_it_up/file_list.rb", "lib/back_it_up/file_packager.rb", "lib/back_it_up/command.rb", "lib/back_it_up/runner.rb", "README.rdoc", "Manifest", "backitup.gemspec"]
14
+ s.extra_rdoc_files = ["lib/back_it_up.rb", "lib/back_it_up/config.rb", "lib/back_it_up/runner.rb", "lib/back_it_up/command.rb", "lib/back_it_up/ftp.rb", "lib/back_it_up/file_list.rb", "lib/back_it_up/file_packager.rb", "README.rdoc", "bin/backitup"]
15
+ s.files = ["sample.backitup", "lib/back_it_up.rb", "lib/back_it_up/config.rb", "lib/back_it_up/runner.rb", "lib/back_it_up/command.rb", "lib/back_it_up/ftp.rb", "lib/back_it_up/file_list.rb", "lib/back_it_up/file_packager.rb", "README.rdoc", "Rakefile", "spec/test-config.backitup", "spec/file_list_spec.rb", "spec/spec_helper.rb", "spec/runner_spec.rb", "spec/spec.opts", "spec/file_packager_spec.rb", "spec/ftp_spec.rb", "spec/config_spec.rb", "bin/backitup", "Manifest", "backitup.gemspec"]
16
16
  s.has_rdoc = true
17
17
  s.homepage = %q{http://github.com/robinsp/backitup}
18
18
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Backitup", "--main", "README.rdoc"]
19
19
  s.require_paths = ["lib"]
20
20
  s.rubyforge_project = %q{backitup}
21
- s.rubygems_version = %q{1.3.2}
21
+ s.rubygems_version = %q{1.3.1}
22
22
  s.summary = %q{Simple backup tool}
23
23
 
24
24
  if s.respond_to? :specification_version then
25
25
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
26
- s.specification_version = 3
26
+ s.specification_version = 2
27
27
 
28
28
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
29
29
  s.add_runtime_dependency(%q<rubyzip>, [">= 0"])
data/lib/back_it_up.rb CHANGED
@@ -1,4 +1,17 @@
1
+ class NilClass
2
+ def blank?
3
+ true
4
+ end
5
+ end
6
+
7
+ class String
8
+ def blank?
9
+ (self == nil || self == "")
10
+ end
11
+ end
12
+
1
13
  require 'back_it_up/runner'
2
14
  require 'back_it_up/config'
3
15
  require 'back_it_up/file_packager'
4
16
  require 'back_it_up/file_list'
17
+ require 'back_it_up/ftp'
@@ -17,6 +17,18 @@ module BackItUp
17
17
  # in the <tt>~/Desktop/drop-in-me-for-backup</tt> directory and its sub dirs, and
18
18
  # place them in <tt>/tmp/backupfile_[date]_time.zip</tt>.
19
19
  module ScriptDSL
20
+ INVALID_FTP_ARG_MSG = "Invalid arguments for ftp"
21
+
22
+ # After packaging backup set send the file to this server.
23
+ #
24
+ # Options:
25
+ # <tt>:remote_dir</tt> Remote directory on FTP host
26
+ #
27
+ def ftp(host, user, passwd, options = {} )
28
+ raise INVALID_FTP_ARG_MSG if host.blank? || user.blank? || passwd.blank?
29
+
30
+ @ftp_options = options.merge( {:user => user, :host => host, :passwd => passwd } )
31
+ end
20
32
 
21
33
  # Starts off the backup script.
22
34
  #
@@ -77,7 +89,7 @@ module BackItUp
77
89
 
78
90
  class Config
79
91
  include ScriptDSL
80
- attr_reader :files, :dirs, :dest_filename
92
+ attr_reader :files, :dirs, :dest_filename, :ftp_options
81
93
 
82
94
  def initialize(file_handle)
83
95
  @files = []
@@ -0,0 +1,18 @@
1
+ require 'net/ftp'
2
+
3
+ module BackItUp
4
+ class Ftp
5
+ def initialize(options)
6
+ raise "No options" if options == nil || options.empty?
7
+ @options = options
8
+ end
9
+
10
+ def transfer(filename)
11
+ Net::FTP.open(@options[:host]) do |ftp|
12
+ ftp.login(@options[:user], @options[:passwd] )
13
+ ftp.chdir(@options[:remote_dir]) if @options[:remote_dir]
14
+ ftp.putbinaryfile(filename)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -5,7 +5,14 @@ module BackItUp
5
5
 
6
6
  file = File.open(filename)
7
7
  config = Config.new(file)
8
- puts "Wrote backup to: #{ FilePackager.new(config).package }"
8
+ packaged_filename = FilePackager.new(config).package
9
+ puts "Wrote backup to: #{ packaged_filename }."
10
+
11
+ if config.ftp_options
12
+ BackItUp::Ftp.new(config.ftp_options).transfer(packaged_filename)
13
+ puts "Tranferred to FTP host."
14
+ end
15
+
9
16
  end
10
17
  end
11
18
  end
data/sample.backitup CHANGED
@@ -1,11 +1,9 @@
1
-
2
1
  # sample.backitup
3
-
4
2
  backup do
5
-
6
3
  file '/home/robin/backup.this.file'
7
-
8
4
  dir "~/Desktop/drop-in-me-for-backup"
9
5
 
10
6
  destination_file "/tmp/backupfile"
7
+
8
+ ftp 'host.domain.com', 'username', 'password', :remote_dir => 'backups'
11
9
  end
data/spec/config_spec.rb CHANGED
@@ -134,6 +134,33 @@ describe BackItUp::Config do
134
134
  @config.dirs.pop.should == @valid_file
135
135
  end
136
136
  end
137
+
138
+ describe "ftp()" do
139
+ it "should require host" do
140
+ lambda{ @config.ftp("", "string", "string") }.should raise_error(BackItUp::ScriptDSL::INVALID_FTP_ARG_MSG)
141
+ end
142
+ it "should require username" do
143
+ lambda{ @config.ftp("string", "", "string") }.should raise_error(BackItUp::ScriptDSL::INVALID_FTP_ARG_MSG)
144
+ end
145
+ it "should require password" do
146
+ lambda{ @config.ftp("string", "string", "") }.should raise_error(BackItUp::ScriptDSL::INVALID_FTP_ARG_MSG)
147
+ end
148
+
149
+ it "should save args to ftp_options attribute" do
150
+ @config.ftp("host", "user", "passwd")
151
+ @config.ftp_options.should == {:user => "user", :passwd => "passwd", :host => "host"}
152
+ end
153
+
154
+ it "should save options when given" do
155
+ @config.ftp("host", "user", "passwd", :an_option => "the_option")
156
+ @config.ftp_options.should == {:user => "user", :passwd => "passwd", :host => "host", :an_option => "the_option"}
157
+ end
158
+
159
+ it "should not override host, user and passwd args when these are given in options" do
160
+ @config.ftp("host", "user", "passwd", :user => "user1", :passwd => "passwd1", :host => "host1")
161
+ @config.ftp_options.should == {:user => "user", :passwd => "passwd", :host => "host"}
162
+ end
163
+ end
137
164
  end
138
165
 
139
166
  end
data/spec/ftp_spec.rb ADDED
@@ -0,0 +1,51 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe BackItUp::Ftp do
4
+ before do
5
+ @user = "username"
6
+ @passwd = "password"
7
+ @host = "hostname"
8
+
9
+ @options = {:user => @user, :host => @host, :passwd => @passwd}
10
+ end
11
+
12
+ describe "constructor" do
13
+ it "should require options" do
14
+ lambda {BackItUp::Ftp.new(nil) }.should raise_error
15
+ lambda {BackItUp::Ftp.new({}) }.should raise_error
16
+ lambda {BackItUp::Ftp.new(@options) }.should_not raise_error
17
+ end
18
+ end
19
+
20
+ describe "transfer()" do
21
+ before do
22
+ @filename = "thefilename"
23
+ @mock_ftp = stub("mock-ftp", :login => "", :putbinaryfile => "")
24
+
25
+ Net::FTP.stubs(:open).with(@host).yields(@mock_ftp)
26
+ @ftp = BackItUp::Ftp.new(@options)
27
+ end
28
+
29
+ it "should open host" do
30
+ Net::FTP.expects(:open).with(@host)
31
+ @ftp.transfer(@filename)
32
+ end
33
+
34
+ it "should login" do
35
+ @mock_ftp.expects(:login).with(@user, @passwd)
36
+ @ftp.transfer(@filename)
37
+ end
38
+
39
+ it "should put binary file" do
40
+ @mock_ftp.expects(:putbinaryfile).with(@filename)
41
+ @ftp.transfer(@filename)
42
+ end
43
+
44
+ it "should change directory if option is set" do
45
+ dirname = "remote-directory"
46
+ @mock_ftp.expects(:chdir).with(dirname)
47
+ ftp = BackItUp::Ftp.new( @options.merge(:remote_dir => dirname) )
48
+ ftp.transfer(@filename)
49
+ end
50
+ end
51
+ end
data/spec/runner_spec.rb CHANGED
@@ -17,7 +17,7 @@ describe BackItUp::Runner do
17
17
  @file = mock('fake file handle')
18
18
  File.stubs(:open).with(@filename).returns(@file)
19
19
 
20
- @mock_config = mock('mock-config')
20
+ @mock_config = stub('mock-config', :ftp_options => nil)
21
21
  BackItUp::Config.stubs(:new).returns(@mock_config)
22
22
 
23
23
  @mock_packager
@@ -46,6 +46,15 @@ describe BackItUp::Runner do
46
46
  BackItUp::Runner.new(@filename)
47
47
  end
48
48
 
49
+ it "should transfer packaged file if ftp is configured" do
50
+ ftp_config = {:ftp => "config"}
51
+ @mock_config.stubs(:ftp_options).returns(ftp_config)
52
+ ftp = mock('ftp')
53
+ BackItUp::Ftp.expects(:new).with(ftp_config).returns(ftp)
54
+ ftp.expects(:transfer).with(@package_result_filename)
55
+ BackItUp::Runner.new(@filename)
56
+ end
57
+
49
58
  end
50
59
 
51
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: robinsp-backitup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Spainhour
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-28 00:00:00 -07:00
12
+ date: 2009-05-29 00:00:00 -07:00
13
13
  default_executable: backitup
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -29,32 +29,35 @@ executables:
29
29
  extensions: []
30
30
 
31
31
  extra_rdoc_files:
32
- - bin/backitup
33
32
  - lib/back_it_up.rb
34
33
  - lib/back_it_up/config.rb
34
+ - lib/back_it_up/runner.rb
35
+ - lib/back_it_up/command.rb
36
+ - lib/back_it_up/ftp.rb
35
37
  - lib/back_it_up/file_list.rb
36
38
  - lib/back_it_up/file_packager.rb
37
- - lib/back_it_up/command.rb
38
- - lib/back_it_up/runner.rb
39
39
  - README.rdoc
40
- files:
41
40
  - bin/backitup
41
+ files:
42
42
  - sample.backitup
43
- - spec/test-config.backitup
44
- - spec/file_packager_spec.rb
45
- - spec/config_spec.rb
46
- - spec/runner_spec.rb
47
- - spec/file_list_spec.rb
48
- - spec/spec.opts
49
- - spec/spec_helper.rb
50
- - Rakefile
51
43
  - lib/back_it_up.rb
52
44
  - lib/back_it_up/config.rb
45
+ - lib/back_it_up/runner.rb
46
+ - lib/back_it_up/command.rb
47
+ - lib/back_it_up/ftp.rb
53
48
  - lib/back_it_up/file_list.rb
54
49
  - lib/back_it_up/file_packager.rb
55
- - lib/back_it_up/command.rb
56
- - lib/back_it_up/runner.rb
57
50
  - README.rdoc
51
+ - Rakefile
52
+ - spec/test-config.backitup
53
+ - spec/file_list_spec.rb
54
+ - spec/spec_helper.rb
55
+ - spec/runner_spec.rb
56
+ - spec/spec.opts
57
+ - spec/file_packager_spec.rb
58
+ - spec/ftp_spec.rb
59
+ - spec/config_spec.rb
60
+ - bin/backitup
58
61
  - Manifest
59
62
  - backitup.gemspec
60
63
  has_rdoc: true
@@ -86,7 +89,7 @@ requirements: []
86
89
  rubyforge_project: backitup
87
90
  rubygems_version: 1.2.0
88
91
  signing_key:
89
- specification_version: 3
92
+ specification_version: 2
90
93
  summary: Simple backup tool
91
94
  test_files: []
92
95