oldtime 0.0.1 → 0.1.0

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/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  /rfrom/
2
+ /*.gem
data/Gemfile CHANGED
@@ -1,12 +1,12 @@
1
1
  source :rubygems
2
2
 
3
3
  gem "thor"
4
- gem "optimism", :path => "/home/guten/dev/one/optimism"
5
- gem "pa", :path => "/home/guten/dev/one/pa"
6
- gem "tagen", :path => "/home/guten/dev/one/tagen", :require => "tagen/core"
4
+ gem "tagen", "~>1.1.4"
5
+ gem "pa", "~>1.2.0"
6
+ gem "optimism", "~>3.1.0"
7
7
 
8
8
  group :development do
9
9
  gem "rspec"
10
10
  gem "watchr"
11
- #gem "rag"
11
+ gem "rag"
12
12
  end
data/Gemfile.lock CHANGED
@@ -1,20 +1,3 @@
1
- PATH
2
- remote: /home/guten/dev/one/optimism
3
- specs:
4
- optimism (3.0.4)
5
- hike (~> 1.2.0)
6
-
7
- PATH
8
- remote: /home/guten/dev/one/pa
9
- specs:
10
- pa (1.1.4)
11
-
12
- PATH
13
- remote: /home/guten/dev/one/tagen
14
- specs:
15
- tagen (1.1.2)
16
- activesupport (~> 3.1.0)
17
-
18
1
  GEM
19
2
  remote: http://rubygems.org/
20
3
  specs:
@@ -23,6 +6,14 @@ GEM
23
6
  diff-lcs (1.1.3)
24
7
  hike (1.2.1)
25
8
  multi_json (1.0.4)
9
+ optimism (3.1.0)
10
+ hike (~> 1.2.0)
11
+ pa (1.2.1)
12
+ rag (1.2.0)
13
+ optimism (~> 3.1.0)
14
+ pa (~> 1.2.0)
15
+ tagen (~> 1.1.0)
16
+ thor (~> 0.14.0)
26
17
  rspec (2.8.0)
27
18
  rspec-core (~> 2.8.0)
28
19
  rspec-expectations (~> 2.8.0)
@@ -31,6 +22,8 @@ GEM
31
22
  rspec-expectations (2.8.0)
32
23
  diff-lcs (~> 1.1.2)
33
24
  rspec-mocks (2.8.0)
25
+ tagen (1.1.4)
26
+ activesupport (~> 3.1.0)
34
27
  thor (0.14.6)
35
28
  watchr (0.7)
36
29
 
@@ -38,9 +31,10 @@ PLATFORMS
38
31
  ruby
39
32
 
40
33
  DEPENDENCIES
41
- optimism!
42
- pa!
34
+ optimism (~> 3.1.0)
35
+ pa (~> 1.2.0)
36
+ rag
43
37
  rspec
44
- tagen!
38
+ tagen (~> 1.1.4)
45
39
  thor
46
40
  watchr
data/README.md CHANGED
@@ -1,39 +1,92 @@
1
- Oldtime, a highly customize configurable backup & restore system.
1
+ Oldtime, a highly customizable and configurable backup & restore system
2
2
  =================================================================
3
3
 
4
4
  | Homepage: | https://github.com/GutenYe/oldtime |
5
- |----------------|------------------------------------------------------ |
6
- | Author: | Guten |
7
- | License: | MIT-LICENSE |
8
- | Documentation: | http://rubydoc.info/gems/oldtime/frames |
5
+ |----------------|-------------------------------------------|
6
+ | Author: | Guten |
7
+ | License: | MIT-LICENSE |
8
+ | Documentation: | http://rubydoc.info/gems/oldtime/frames |
9
9
  | Issue Tracker: | https://github.com/GutenYe/oldtime/issues |
10
10
 
11
- Overview
12
- --------
13
11
 
14
- WARNING: THIS PROJECT IS UNDER HEAV DEVELOPMENT, NOT READY FOR PRODUCTION.
12
+ Getting Started
13
+ --------------
15
14
 
16
- Features
17
- --------
15
+ For example, we want to backup /oldtime to /tmp/hello.oldtime using rsync.
16
+
17
+ create hello example from https://github.com/GutenYe/oldtime-hello-example
18
+
19
+ $ git clone git://github.com/GutenYe/oldtime-hello-example.git /tmp/oldtime
20
+ $ sudo ln -s /tmp/oldtime /oldtime
21
+
22
+ it will have these files:
23
+
24
+ /oldtime/oldtime/
25
+ hello.conf
26
+ hello/
27
+ backup.hello
28
+
29
+ # /oldtime/oldtimerc # an Optimsim config file.
30
+ media = "/tmp" # get this variable by Rc.media.
31
+
32
+ # /oldtime/oldtime/hello/backup.hello
33
+
34
+ /oldtime/ <%=Rc.media%>/hello.oldtime/ # an ERB template.
35
+
36
+ [exclude]
37
+ /.git
38
+ /oldtimerc
39
+
40
+ # /oldtime/hello.conf
41
+
42
+ require "oldtime/rsync"
43
+
44
+ configure <<EOF
45
+ backup:
46
+ rsync.options = "-av --delete" # get this variable by Rc.backup.rsync.options
47
+
48
+ restore:
49
+ rsync.options = "-av"
50
+ EOF
51
+
52
+ backup do
53
+ rsync2 "backup.hello" # run rsync command read from /oldtime/hello/backup.hello file
54
+ end
55
+
56
+ restore do
57
+ rsync "<%=Rc.media%>/hello.oldtime/ /oldtime/" # run rsync command
58
+ end
59
+
60
+ Let's begin.
61
+
62
+ $ oldtime backup hello
63
+ # it calls "rsync -av --delete --exclude-from /tmp/hello.xx/exclude /oldtime/ /tmp/hello.oldtime/"
64
+
65
+ $ oldtime restore hello
66
+ # it calls "rsync -av /tmp/hello.oldtime/ /oldtime/"
18
67
 
19
- a clearly list of features.
68
+ for a real world example, see [oldtime-archlinux-solution](https://github.com/GutenYe/oldtime-archlinux-solution).
20
69
 
21
- Usage
22
- -----
70
+ see Optimism Syntax: https://github.com/GutenYe/optimism
23
71
 
24
- how to use
72
+ see ERB Syntax: http://ruby-doc.org/stdlib-1.9.3/libdoc/erb/rdoc/ERB.html
25
73
 
26
74
  Install
27
- ----------
75
+ -------
28
76
 
29
- gem install oldtime
77
+ # Archlinux
78
+ pacman -S ruby rsync
79
+ gem install oldtime
30
80
 
31
- Contributing
32
- -------------
81
+ Note on Patches/Pull Requests
82
+ -----------------------------
33
83
 
34
- * Feel free to join the project and make contributions (by submitting a pull request)
35
- * Submit any bugs/features/ideas to issue tracker
36
- * Coding Style Guide: https://gist.github.com/1105334
84
+ 1. Fork the project.
85
+ 2. Make your feature addition or bug fix.
86
+ 3. Add tests for it. This is important so I don't break it in a future version unintentionally.
87
+ 4. Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
88
+ 5. Send me a pull request. Bonus points for topic branches.
89
+ 6. Coding Style Guide: https://gist.github.com/1105334
37
90
 
38
91
  Credits
39
92
  --------
@@ -43,7 +96,8 @@ Credits
43
96
  Resources
44
97
  ---------
45
98
 
46
- some related resources to help each other.
99
+ * [Ruby](http://www.ruby-lang.org/en): A Programmer's Best Friend
100
+ * [Archlinux](http://www.archlinux.org): A simple, lightweight distribution
47
101
 
48
102
  Copyright
49
103
  ---------
data/lib/oldtime/cli.rb CHANGED
@@ -7,19 +7,19 @@ module Oldtime
7
7
  # default_task :install
8
8
  class_option "no-color", :type => :boolean, :banner => "Disable colorization in output"
9
9
  class_option "verbose", :aliases => "-V", :type => :boolean, :banner => "Enable verbose output mode"
10
- class_option "config", :aliases => "-c", :type => :string, :banner => "Config file"
11
- class_option "user-mode", :aliases => "-u", :type => :boolean, :banner => "Enter into User mode"
10
+ class_option "dir", :aliases => "-d", :type => :string, :banner => "config directory"
12
11
 
13
12
  def initialize(*)
14
13
  super
15
- the_shell = (options["no-color"] ? Thor::Shell::Basic.new : shell)
14
+ o = options.dup
15
+ the_shell = (o["no-color"] ? Thor::Shell::Basic.new : shell)
16
16
  Oldtime.ui = UI::Shell.new(the_shell)
17
- Oldtime.ui.debug! if options["verbose"]
17
+ Oldtime.ui.debug! if o["verbose"]
18
18
 
19
- config = options["config"] || (options["user-mode"] ? "#{ENV['HOME']}/.oldtimerc" : "/oldtime/oldtimerc")
20
- Rc << Optimism.require(Pa.absolute2(config))
19
+ home = Rc.p.home = o["dir"] || Rc.p.home
20
+ homerc = Rc.p.homerc = Pa("#{home}rc")
21
21
 
22
- Rc.p.home ||= config.sub(/rc$/, "")
22
+ Rc << Optimism.require(homerc.absolute2)
23
23
  end
24
24
 
25
25
  desc "backup <profile> [instance]", "begin backup process."
data/lib/oldtime/rc.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  # user config
2
- p:
3
- home = nil
4
- oldtime = Pa("/oldtime")
5
-
6
2
  backup:
7
3
  rsync.options = ""
8
4
 
5
+ restore:
6
+ rsync.options = ""
7
+
9
8
  # system config
10
9
 
10
+ p:
11
+ home = Pa("/oldtime/oldtime")
12
+ homerc = nil
13
+
11
14
  backup_blks = {}
12
15
  restore_blks = {}
13
-
14
- restore:
15
- rsync.options = ""
@@ -1,3 +1,3 @@
1
1
  module Oldtime
2
- VERSION="0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/oldtime.rb CHANGED
@@ -41,13 +41,13 @@ private
41
41
 
42
42
  def check_mountpoint(path)
43
43
  unless Pa.mountpoint?(path)
44
- raise Error, "`#{path}' is unmounted."
44
+ raise Oldtime::Error, "`#{path}' is unmounted."
45
45
  end
46
46
  end
47
47
 
48
48
  def check_root
49
49
  unless Process.uid == 0
50
- raise Error, "need root privilege to run this script."
50
+ raise Oldtime::Error, "need root privilege to run this script."
51
51
  end
52
52
  end
53
53
  end
data/oldtime.gemspec CHANGED
@@ -1,12 +1,12 @@
1
- $: << "."
2
- require "lib/oldtime/version"
1
+ $: << File.expand_path("../lib", __FILE__)
2
+ require "oldtime/version"
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "oldtime"
6
6
  s.version = Oldtime::VERSION
7
- s.summary = "the backup & restore system"
7
+ s.summary = "a highly customizable and configurable backup & restore system"
8
8
  s.description = <<-EOF
9
- the backup & restore sytem
9
+ The backup & restore system that fits you well. It's a highly customizable and configurable backup & restore system.
10
10
  EOF
11
11
 
12
12
  s.author = "Guten"
@@ -17,5 +17,7 @@ the backup & restore sytem
17
17
  s.files = `git ls-files`.split("\n")
18
18
  #s.executables = ["x"]
19
19
 
20
- #s.add_dependency "x"
20
+ s.add_dependency "tagen", "~>1.1.4"
21
+ s.add_dependency "pa", "~>1.2.0"
22
+ s.add_dependency "optimism", "~>3.1.0"
21
23
  end
data/spec/oldtime_spec.rb CHANGED
@@ -20,4 +20,18 @@ describe Kernel do
20
20
 
21
21
  Rc.restore_blks[:foo].call.should == "restore"
22
22
  end
23
+
24
+ describe "#check_root" do
25
+ it "works" do
26
+ Process.stub(:uid){ 1000 }
27
+ lambda { check_root }.should raise_error(Oldtime::Error)
28
+ end
29
+ end
30
+
31
+ describe "#check_mountpoint" do
32
+ it "works" do
33
+ Pa.stub(:mountpoint?){ false }
34
+ lambda { check_mountpoint("x") }.should raise_error(Oldtime::Error)
35
+ end
36
+ end
23
37
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oldtime
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,9 +9,43 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-31 00:00:00.000000000 Z
13
- dependencies: []
14
- description: ! 'the backup & restore sytem
12
+ date: 2012-02-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: tagen
16
+ requirement: &7492700 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.1.4
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *7492700
25
+ - !ruby/object:Gem::Dependency
26
+ name: pa
27
+ requirement: &7452220 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: 1.2.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *7452220
36
+ - !ruby/object:Gem::Dependency
37
+ name: optimism
38
+ requirement: &7416380 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: 3.1.0
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *7416380
47
+ description: ! 'The backup & restore system that fits you well. It''s a highly customizable
48
+ and configurable backup & restore system.
15
49
 
16
50
  '
17
51
  email: ywzhaifei@gmail.com
@@ -63,6 +97,6 @@ rubyforge_project: xx
63
97
  rubygems_version: 1.8.11
64
98
  signing_key:
65
99
  specification_version: 3
66
- summary: the backup & restore system
100
+ summary: a highly customizable and configurable backup & restore system
67
101
  test_files: []
68
102
  has_rdoc: