stowaway 0.2.0 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/TODO.txt +1 -2
- data/VERSION.yml +1 -1
- data/lib/stowaway/file.rb +4 -4
- data/lib/stowaway/fshelpyhelp.rb +29 -6
- data/lib/stowaway/locator.rb +11 -16
- data/lib/stowaway/sweeper.rb +14 -22
- data/spec/lib/io_mock.rb +10 -0
- data/spec/lib/locator_spec.rb +0 -0
- data/spec/lib/sweeper_spec.rb +10 -2
- data/stowaway.gemspec +4 -2
- metadata +4 -2
data/TODO.txt
CHANGED
data/VERSION.yml
CHANGED
data/lib/stowaway/file.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
module Stowaway
|
2
2
|
class FileObj
|
3
3
|
attr :fullpath
|
4
|
-
|
4
|
+
|
5
5
|
def initialize(fullpath, root = nil)
|
6
6
|
@fullpath = fullpath
|
7
7
|
@root = root || Dir.pwd
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def name
|
11
11
|
File.basename(@fullpath)
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
def path
|
15
15
|
File.split(@fullpath)[0]
|
16
16
|
end
|
@@ -19,7 +19,7 @@ module Stowaway
|
|
19
19
|
root = @root.split("/").last
|
20
20
|
@fullpath.sub(/^.+\/#{root}/, "")
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def ==(fileObj)
|
24
24
|
self.fullpath == fileObj.fullpath
|
25
25
|
end
|
data/lib/stowaway/fshelpyhelp.rb
CHANGED
@@ -1,10 +1,33 @@
|
|
1
|
-
module
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module Stowaway
|
2
|
+
module FSHelpyHelp
|
3
|
+
def ignore?(file)
|
4
|
+
@ignore.each do |exp|
|
5
|
+
if file.match(exp)
|
6
|
+
return true
|
7
|
+
end
|
8
|
+
end
|
9
|
+
false
|
10
|
+
end
|
11
|
+
|
12
|
+
def ignore_special_directories(root)
|
13
|
+
@ignore << "/#{root}\/test$|spec$|vendor$|features$"
|
14
|
+
end
|
15
|
+
|
16
|
+
def recursively(path, &block)
|
17
|
+
dir = Dir.new(path)
|
18
|
+
|
19
|
+
dir.each do |f|
|
20
|
+
next if ignore?(dir.path)
|
21
|
+
next if ignore?(f)
|
22
|
+
|
23
|
+
file_p = File.join(dir.path, f)
|
24
|
+
|
25
|
+
if File.directory?(file_p)
|
26
|
+
recursively(file_p, &block)
|
27
|
+
else
|
28
|
+
yield(file_p)
|
29
|
+
end
|
6
30
|
end
|
7
31
|
end
|
8
|
-
false
|
9
32
|
end
|
10
33
|
end
|
data/lib/stowaway/locator.rb
CHANGED
@@ -10,23 +10,18 @@ module Stowaway
|
|
10
10
|
@ignore = [/^\./]
|
11
11
|
end
|
12
12
|
|
13
|
-
def find_all(path
|
14
|
-
@root = path
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
next if ignore?(f)
|
20
|
-
|
21
|
-
file = File.join(dir.path, f)
|
22
|
-
|
23
|
-
if File.directory?(file)
|
24
|
-
find_all file, files
|
25
|
-
elsif type?(f)
|
26
|
-
files << FileObj.new(file, @root)
|
27
|
-
end
|
13
|
+
def find_all(path)
|
14
|
+
@root = path
|
15
|
+
@files = []
|
16
|
+
ignore_special_directories(@root)
|
17
|
+
recursively(path) do |file_p|
|
18
|
+
push_if_ext_match(file_p)
|
28
19
|
end
|
29
|
-
files
|
20
|
+
@files
|
21
|
+
end
|
22
|
+
|
23
|
+
def push_if_ext_match(file_p)
|
24
|
+
@files << FileObj.new(file_p, @root) if type?(file_p)
|
30
25
|
end
|
31
26
|
|
32
27
|
def type?(file)
|
data/lib/stowaway/sweeper.rb
CHANGED
@@ -20,40 +20,32 @@ module Stowaway
|
|
20
20
|
@ignore << /^\.|\.jpg$|\.jpeg$|\.gif$|\.png$|\.ico$|\.bmp$/i
|
21
21
|
end
|
22
22
|
|
23
|
-
def sweep(path, files
|
24
|
-
@root
|
25
|
-
@result
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
dir.each do |f|
|
30
|
-
next if ignore?(f)
|
31
|
-
|
32
|
-
file = File.join(dir.path, f)
|
33
|
-
|
34
|
-
if File.directory?(file)
|
35
|
-
sweep(file)
|
36
|
-
else
|
37
|
-
inspect_file(file)
|
38
|
-
end
|
39
|
-
end
|
23
|
+
def sweep(path, files)
|
24
|
+
@root = path
|
25
|
+
@result = OpenStruct.new({ :files => files, :name_only_matches => []})
|
26
|
+
ignore_special_directories(@root)
|
27
|
+
recursively(path) { |fp| inspect_file(fp) }
|
40
28
|
@result
|
41
29
|
end
|
42
30
|
|
43
31
|
private
|
44
32
|
|
45
|
-
def inspect_file(
|
46
|
-
|
47
|
-
|
48
|
-
clr_print(" => #{file_name}")
|
49
|
-
File.open(file, "r") do |i|
|
33
|
+
def inspect_file(file_p)
|
34
|
+
clr_print(" => #{path_relative_to_root(file_p)}")
|
35
|
+
File.open(file_p, "r") do |i|
|
50
36
|
while line = i.gets
|
37
|
+
next unless line.valid_encoding?
|
51
38
|
remove_match(line) #rescue nil
|
52
39
|
end
|
53
40
|
end
|
54
41
|
flush
|
55
42
|
end
|
56
43
|
|
44
|
+
def path_relative_to_root(file_p)
|
45
|
+
root = @root.split("/").last
|
46
|
+
file_p.sub(/^.+\/(#{root})/, "")
|
47
|
+
end
|
48
|
+
|
57
49
|
def remove_match(line)
|
58
50
|
@result.files.delete_if do |file|
|
59
51
|
if @matcher.match?(line, file)
|
data/spec/lib/io_mock.rb
ADDED
data/spec/lib/locator_spec.rb
CHANGED
Binary file
|
data/spec/lib/sweeper_spec.rb
CHANGED
@@ -2,6 +2,7 @@ require "spec/spec_helper"
|
|
2
2
|
require "lib/stowaway/file"
|
3
3
|
require "lib/stowaway/sweeper"
|
4
4
|
require "lib/stowaway/matcher"
|
5
|
+
require "spec/lib/io_mock.rb"
|
5
6
|
|
6
7
|
describe Stowaway::Sweeper do
|
7
8
|
|
@@ -34,7 +35,7 @@ describe Stowaway::Sweeper do
|
|
34
35
|
files.length.should == 1
|
35
36
|
end
|
36
37
|
|
37
|
-
it "should
|
38
|
+
it "should print the path to the file (relative to root) being swept through" do
|
38
39
|
@ignore << /testfile2/
|
39
40
|
sweeper.should_receive(:clr_print).once.with(" => /testfile1.txt")
|
40
41
|
sweeper.sweep("spec/data", [])
|
@@ -64,5 +65,12 @@ describe Stowaway::Sweeper do
|
|
64
65
|
files.should_not be_empty
|
65
66
|
files.first.fullpath.should == "/a/stowaway.txt"
|
66
67
|
end
|
67
|
-
|
68
|
+
|
69
|
+
it "should ignore lines with invalid encoding" do
|
70
|
+
files = [Stowaway::FileObj.new("/fake/path1/button.jpg")]
|
71
|
+
File.stub!(:open).and_yield(IOMock.new)
|
72
|
+
sweeper.should_not_receive(:remove_match)
|
73
|
+
sweeper.sweep("spec/data", files)
|
74
|
+
end
|
75
|
+
|
68
76
|
end
|
data/stowaway.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{stowaway}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Emilio Cavazos"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-03-04}
|
13
13
|
s.default_executable = %q{stowaway}
|
14
14
|
s.email = %q{ejcavazos@gmail.com}
|
15
15
|
s.executables = ["stowaway"]
|
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
|
|
36
36
|
"spec/data/testfile1.txt",
|
37
37
|
"spec/data/testfile2.txt",
|
38
38
|
"spec/lib/file_spec.rb",
|
39
|
+
"spec/lib/io_mock.rb",
|
39
40
|
"spec/lib/locator_spec.rb",
|
40
41
|
"spec/lib/matcher_spec.rb",
|
41
42
|
"spec/lib/options_spec.rb",
|
@@ -53,6 +54,7 @@ Gem::Specification.new do |s|
|
|
53
54
|
s.summary = %q{Locate files in a web project that aren't being used.}
|
54
55
|
s.test_files = [
|
55
56
|
"spec/lib/file_spec.rb",
|
57
|
+
"spec/lib/io_mock.rb",
|
56
58
|
"spec/lib/locator_spec.rb",
|
57
59
|
"spec/lib/matcher_spec.rb",
|
58
60
|
"spec/lib/options_spec.rb",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stowaway
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emilio Cavazos
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-03-04 00:00:00 -08:00
|
13
13
|
default_executable: stowaway
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- spec/data/testfile1.txt
|
42
42
|
- spec/data/testfile2.txt
|
43
43
|
- spec/lib/file_spec.rb
|
44
|
+
- spec/lib/io_mock.rb
|
44
45
|
- spec/lib/locator_spec.rb
|
45
46
|
- spec/lib/matcher_spec.rb
|
46
47
|
- spec/lib/options_spec.rb
|
@@ -80,6 +81,7 @@ specification_version: 3
|
|
80
81
|
summary: Locate files in a web project that aren't being used.
|
81
82
|
test_files:
|
82
83
|
- spec/lib/file_spec.rb
|
84
|
+
- spec/lib/io_mock.rb
|
83
85
|
- spec/lib/locator_spec.rb
|
84
86
|
- spec/lib/matcher_spec.rb
|
85
87
|
- spec/lib/options_spec.rb
|