Dahistory 0.4.3 → 1.0.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/README.md CHANGED
@@ -13,7 +13,7 @@ are overwriting a file you have encountered before.
13
13
  Installation
14
14
  ------------
15
15
 
16
- gem 'Dahistory'
16
+ gem install Dahistory
17
17
 
18
18
  Usage
19
19
  ------
@@ -24,7 +24,7 @@ Usage
24
24
 
25
25
  Dahistory "some/file.txt"
26
26
 
27
- # Checks your directory (default "./history").
27
+ # Checks your history directory (default "./history").
28
28
  # If not found there, saves copy of file in ./pending dir and
29
29
  # raises Dahistory::Pending_File, "pending/HOSTNAME,path,some,file.txt.TIMESTAMP"
30
30
  #
@@ -32,12 +32,14 @@ Usage
32
32
  # move the file from the pending directory to your source/history dir, and
33
33
  # run your recipe/code again.
34
34
 
35
- Override the default settings:
35
+ You can also specify different source directories using :dirs.
36
+ Below is how you use :dirs and other settings:
36
37
 
37
38
  Dahistory { |o|
38
39
 
39
40
  o.file "file/name.txt"
40
- o.dirs "dir1", "dir2" # defaults to "./history"
41
+ o.dirs "dir1", "dir2" # -> default: []
42
+ o.history "./history"
41
43
  o.pending_dir "./pending"
42
44
  o.backup_file "#{`hostname`}.name.txt.#{Time.now.to_i}"
43
45
  o.on_raise_pending {
@@ -21,7 +21,8 @@ class Dahistory
21
21
  @git = false
22
22
  @file = nil
23
23
  file!(file_path) if file_path
24
- dirs './history'
24
+ dirs []
25
+ history './history'
25
26
  pending_dir './pending'
26
27
  @on_raise_pending = nil
27
28
  yield(self) if block_given?
@@ -33,8 +34,12 @@ class Dahistory
33
34
  @file = File.expand_path(path)
34
35
  end
35
36
 
36
- def dirs *args
37
- @dirs = args.flatten.map { |dir| File.expand_path dir }
37
+ def dirs *raw
38
+ @dirs = raw.flatten.map { |dir| File.expand_path dir }
39
+ end
40
+
41
+ def history raw
42
+ @history = File.expand_path raw
38
43
  end
39
44
 
40
45
  def pending_dir dir
@@ -77,6 +82,10 @@ class Dahistory
77
82
 
78
83
  }
79
84
 
85
+ def backup_basename
86
+ File.basename( backup_file )
87
+ end
88
+
80
89
  def backup_file str = :RETURN
81
90
  if str == :RETURN
82
91
  @backup_file ||= "#{`hostname`.strip}-#{file.gsub('/',',')}.#{Time.now.utc.strftime "%Y.%m.%d.%H.%M.%S"}"
@@ -99,29 +108,34 @@ class Dahistory
99
108
  content = File.read(file)
100
109
  standard = content.gsub("\r", '')
101
110
 
102
- old = self.class.find_file_copy file, dirs
111
+ in_dirs = self.class.find_file_copy file, dirs
112
+ in_history = self.class.find_file_copy file, history
103
113
  in_pending = self.class.find_file_copy file, pending_dir
104
114
 
105
- if !old
106
-
107
- if !in_pending
108
-
109
- File.write(backup_file, content)
115
+ return true if in_history
110
116
 
111
- if @git
112
- Exit_Zero "git add #{backup_file}"
113
- Exit_Zero %! git commit -m "Backup: #{backup_file}"!
114
- end
115
-
116
- if @git.is_a?(String)
117
- Exit_Zero %! git push #{@git} !
118
- end
119
-
120
- end # === if !in_pending
121
-
122
- on_raise_pending.call if on_raise_pending
123
- raise Pending, backup_file
117
+ if in_dirs
118
+ File.write(File.join(history, backup_basename), content)
119
+ return true
124
120
  end
121
+
122
+ if !in_pending
123
+
124
+ File.write(backup_file, content)
125
+
126
+ if @git
127
+ Exit_Zero "git add #{backup_file}"
128
+ Exit_Zero %! git commit -m "Backup: #{backup_file}"!
129
+ end
130
+
131
+ if @git.is_a?(String)
132
+ Exit_Zero %! git push #{@git} !
133
+ end
134
+
135
+ end # === if !in_pending
136
+
137
+ on_raise_pending.call if on_raise_pending
138
+ raise Pending, backup_file
125
139
 
126
140
  end # === def
127
141
 
@@ -1,3 +1,3 @@
1
1
  class Dahistory
2
- VERSION = "0.4.3"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -14,6 +14,30 @@ describe "Dahistory" do
14
14
 
15
15
  end # === Dahistory
16
16
 
17
+ describe "Dahistory: source files" do
18
+
19
+ before { reset_dirs }
20
+
21
+ it "copies target file from source dir to history dir" do
22
+ file = "files/a.txt"
23
+ target = rand(1000).to_s
24
+ chdir {
25
+
26
+ File.write(file, target)
27
+ Dahistory { |o|
28
+ o.file file
29
+ o.dirs "./files"
30
+ }
31
+
32
+ name = `ls history`.strip.split.first
33
+ File.read(File.join "history", name).should == target
34
+
35
+ }
36
+ end
37
+
38
+ end # === Dahistory: source files
39
+
40
+
17
41
  describe "Dahistory: pending file" do
18
42
 
19
43
  before { reset_dirs }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Dahistory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-13 00:00:00.000000000 Z
12
+ date: 2012-04-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bacon