trash 0.1.1 → 0.2.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/VERSION +1 -1
- data/lib/trash.rb +26 -17
- data/spec/trash_spec.rb +49 -6
- data/trash.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/trash.rb
CHANGED
@@ -2,23 +2,23 @@ require 'fileutils'
|
|
2
2
|
|
3
3
|
class Trash
|
4
4
|
attr_reader :errors
|
5
|
-
attr_accessor :
|
5
|
+
attr_accessor :trash_can
|
6
6
|
|
7
7
|
def initialize(options = {})
|
8
|
-
@
|
9
|
-
|
8
|
+
@trash_can = options[:trash_can].nil? ? "#{ENV['HOME']}/.Trash" : options[:trash_can]
|
9
|
+
create_trash_can_if_absent
|
10
10
|
@errors = []
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
14
|
-
File.directory? @
|
13
|
+
def has_trash_can?
|
14
|
+
File.directory? @trash_can
|
15
15
|
end
|
16
16
|
|
17
17
|
def throw_out(*paths)
|
18
18
|
paths.each do |path|
|
19
19
|
path = File.expand_path(path)
|
20
20
|
if File.exist? path
|
21
|
-
FileUtils.mv(path, "#{
|
21
|
+
FileUtils.mv(path, "#{@trash_can}/#{unique_file_name(path)}")
|
22
22
|
else
|
23
23
|
add_error "#{path} does not exist. Please check the file path."
|
24
24
|
return 1
|
@@ -34,20 +34,29 @@ class Trash
|
|
34
34
|
|
35
35
|
private
|
36
36
|
|
37
|
-
def
|
38
|
-
FileUtils.mkdir_p
|
37
|
+
def create_trash_can_if_absent
|
38
|
+
FileUtils.mkdir_p(@trash_can) unless has_trash_can?
|
39
39
|
end
|
40
40
|
|
41
41
|
def unique_file_name(path)
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
42
|
+
file_name = File.split(path).last
|
43
|
+
file_extension = File.extname(path)
|
44
|
+
|
45
|
+
return file_name unless File.exists?("#{@trash_can}/#{file_name}")
|
46
|
+
|
47
|
+
if File.directory? path
|
48
|
+
unique_file_name_finder { |c| "#{file_name}#{"%02d" % c}" }
|
49
|
+
else
|
50
|
+
unique_file_name_finder { |c| "#{file_name.gsub(file_extension, "#{"%02d" % c}#{file_extension}")}" }
|
50
51
|
end
|
51
|
-
return new_path_name
|
52
52
|
end
|
53
|
+
|
54
|
+
def unique_file_name_finder
|
55
|
+
count = 1
|
56
|
+
while File.exists?("#{@trash_can}/#{yield(count)}")
|
57
|
+
count += 1
|
58
|
+
end
|
59
|
+
return yield(count)
|
60
|
+
end
|
61
|
+
|
53
62
|
end
|
data/spec/trash_spec.rb
CHANGED
@@ -42,7 +42,7 @@ describe "Trash" do
|
|
42
42
|
delete_from_trash "testing2.txt"
|
43
43
|
end
|
44
44
|
|
45
|
-
it "should handle spaces in the file/
|
45
|
+
it "should handle spaces in the file/directory name" do
|
46
46
|
create_file = `echo "Test with spaces..." > "/tmp/test with spaces.txt"`
|
47
47
|
Trash.new.throw_out("/tmp/test with spaces.txt")
|
48
48
|
tmp_should_not_contain "test with spaces.txt"
|
@@ -110,17 +110,60 @@ describe "Trash" do
|
|
110
110
|
delete_from_trash "testdir01"
|
111
111
|
delete_from_trash "testdir02"
|
112
112
|
end
|
113
|
+
|
114
|
+
it "handles dots in a directory name" do
|
115
|
+
`mkdir -p /tmp/testdir.2010`
|
116
|
+
Trash.new.throw_out("/tmp/testdir.2010")
|
117
|
+
tmp_should_not_contain "testdir.2010"
|
118
|
+
trash_should_contain_directory "testdir.2010"
|
119
|
+
|
120
|
+
`mkdir -p /tmp/testdir.2010`
|
121
|
+
Trash.new.throw_out("/tmp/testdir.2010")
|
122
|
+
tmp_should_not_contain "testdir.2010"
|
123
|
+
trash_should_contain_directory "testdir.201001"
|
124
|
+
|
125
|
+
delete_from_trash "testdir.2010"
|
126
|
+
delete_from_trash "testdir.201001"
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
it "appends a number to the directory name if a directory with same name already exisits in trash" do
|
131
|
+
`mkdir -p /tmp/testing`
|
132
|
+
Trash.new.throw_out("/tmp/testing")
|
133
|
+
tmp_should_not_contain "testing"
|
134
|
+
trash_should_contain_directory "testing"
|
135
|
+
|
136
|
+
`mkdir -p /tmp/testing`
|
137
|
+
Trash.new.throw_out("/tmp/testing")
|
138
|
+
tmp_should_not_contain "testing"
|
139
|
+
trash_should_contain_directory "testing01"
|
140
|
+
|
141
|
+
`mkdir -p /tmp/testing`
|
142
|
+
Trash.new.throw_out("/tmp/testing")
|
143
|
+
tmp_should_not_contain "testing"
|
144
|
+
trash_should_contain_directory "testing02"
|
145
|
+
|
146
|
+
`mkdir -p /tmp/testing`
|
147
|
+
Trash.new.throw_out("/tmp/testing")
|
148
|
+
tmp_should_not_contain "testing"
|
149
|
+
trash_should_contain_directory "testing03"
|
150
|
+
|
151
|
+
delete_from_trash "testing"
|
152
|
+
delete_from_trash "testing01"
|
153
|
+
delete_from_trash "testing02"
|
154
|
+
delete_from_trash "testing03"
|
155
|
+
end
|
113
156
|
|
114
|
-
describe "
|
115
|
-
it "finds the
|
157
|
+
describe "trash_can" do
|
158
|
+
it "finds the trash can" do
|
116
159
|
FileUtils.mkdir_p "#{ENV['HOME']}/.Trash"
|
117
|
-
Trash.new.
|
160
|
+
Trash.new.has_trash_can?.should == true
|
118
161
|
end
|
119
162
|
|
120
|
-
it "creates a
|
163
|
+
it "creates a trash can if one does not exist" do
|
121
164
|
delete("/tmp/test_trash_can")
|
122
165
|
File.exist?("/tmp/test_trash_can").should == false
|
123
|
-
oscar = Trash.new({:
|
166
|
+
oscar = Trash.new({:trash_can => "/tmp/test_trash_can"})
|
124
167
|
File.exist?("/tmp/test_trash_can").should == true
|
125
168
|
File.directory?("/tmp/test_trash_can").should == true
|
126
169
|
delete("/tmp/test_trash_can")
|
data/trash.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{trash}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Lee Jones"]
|
12
|
-
s.date = %q{2010-03-
|
12
|
+
s.date = %q{2010-03-26}
|
13
13
|
s.default_executable = %q{trash}
|
14
14
|
s.description = %q{when its hard to say goodbye, and rm is just too much... use trash instead.}
|
15
15
|
s.email = %q{scribblethink@gmail.com}
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Lee Jones
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-03-
|
17
|
+
date: 2010-03-26 00:00:00 -04:00
|
18
18
|
default_executable: trash
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|