stowaway 0.2.0 → 0.2.2
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/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
|