rsanheim-beholder 0.5.13 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +0 -2
- data/examples/lib/beholder_example.rb +44 -4
- data/lib/beholder.rb +27 -13
- metadata +2 -2
data/Rakefile
CHANGED
@@ -48,6 +48,14 @@ describe Beholder do
|
|
48
48
|
beholder.on_change files
|
49
49
|
end
|
50
50
|
|
51
|
+
it "should re-eval the treasure map if the map was modified" do
|
52
|
+
treasure_map = "#{Dir.pwd}/.treasure_map.rb"
|
53
|
+
beholder = Beholder.new
|
54
|
+
stub(File).exist?(treasure_map) { true }
|
55
|
+
mock(beholder).read_map_at(treasure_map)
|
56
|
+
beholder.on_change treasure_map
|
57
|
+
end
|
58
|
+
|
51
59
|
end
|
52
60
|
|
53
61
|
describe "build_cmd" do
|
@@ -98,14 +106,20 @@ describe Beholder do
|
|
98
106
|
|
99
107
|
it "adds paths to watch" do
|
100
108
|
beholder = Beholder.new
|
101
|
-
beholder.watch "
|
102
|
-
beholder.paths_to_watch.should == ["
|
109
|
+
beholder.watch "bar", "foo"
|
110
|
+
beholder.paths_to_watch.should == ["bar", "foo"]
|
103
111
|
end
|
104
112
|
|
105
113
|
it "aliases keep_a_watchful_eye_for to watch" do
|
106
114
|
beholder = Beholder.new
|
107
|
-
beholder.keep_a_watchful_eye_for "
|
108
|
-
beholder.paths_to_watch.should == ["
|
115
|
+
beholder.keep_a_watchful_eye_for "bar", "foo"
|
116
|
+
beholder.paths_to_watch.should == ["bar", "foo"]
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should uniq and sort the paths" do
|
120
|
+
beholder = Beholder.new
|
121
|
+
beholder.watch "foo", "bar", "specs", "foo", "bar", "bar2"
|
122
|
+
beholder.paths_to_watch.should == ["bar", "bar2", "foo", "specs"]
|
109
123
|
end
|
110
124
|
end
|
111
125
|
|
@@ -135,4 +149,30 @@ describe Beholder do
|
|
135
149
|
end
|
136
150
|
end
|
137
151
|
|
152
|
+
describe "read_map_at" do
|
153
|
+
|
154
|
+
it "rescues exceptions from instance_eval'ing the map, and carrys on" do
|
155
|
+
beholder = Beholder.new
|
156
|
+
stub(File).exist? { true }
|
157
|
+
mock(File).readlines("my_map.rb") { ["!and this is invalid Ruby;end\nand more"] }
|
158
|
+
stub(beholder).puts
|
159
|
+
lambda { beholder.read_map_at("my_map.rb") }.should_not raise_error
|
160
|
+
end
|
161
|
+
|
162
|
+
end
|
163
|
+
|
164
|
+
describe "output" do
|
165
|
+
|
166
|
+
it "say puts to stdout if verbose is true" do
|
167
|
+
begin
|
168
|
+
ARGV.push("-v")
|
169
|
+
beholder = Beholder.new
|
170
|
+
mock(beholder).puts("yo dawg")
|
171
|
+
beholder.__send__ :say, "yo dawg"
|
172
|
+
ensure
|
173
|
+
ARGV.pop
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
138
178
|
end
|
data/lib/beholder.rb
CHANGED
@@ -42,7 +42,9 @@ class Beholder
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def watch(*paths)
|
45
|
-
|
45
|
+
self.paths_to_watch.concat(paths)
|
46
|
+
self.paths_to_watch.uniq!
|
47
|
+
self.paths_to_watch.sort!
|
46
48
|
end
|
47
49
|
|
48
50
|
alias :keep_a_watchful_eye_for :watch
|
@@ -55,6 +57,8 @@ class Beholder
|
|
55
57
|
|
56
58
|
def on_change(paths)
|
57
59
|
say "#{paths} changed" unless paths.nil? || paths.empty?
|
60
|
+
treasure_maps_changed = paths.select { |p| possible_map_locations.include?(p) }
|
61
|
+
treasure_maps_changed.each {|map_path| read_map_at(map_path) }
|
58
62
|
matches = paths.map { |path| find_matches(path) }.uniq.compact
|
59
63
|
run_tests matches
|
60
64
|
end
|
@@ -73,20 +77,24 @@ class Beholder
|
|
73
77
|
cmd
|
74
78
|
end
|
75
79
|
|
76
|
-
protected
|
77
|
-
|
78
80
|
def read_all_maps
|
79
81
|
read_default_map
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
82
|
+
possible_map_locations.each { |path| read_map_at(path) }
|
83
|
+
end
|
84
|
+
|
85
|
+
def read_map_at(path)
|
86
|
+
return unless File.exist?(path)
|
87
|
+
say "Found a map at #{path}"
|
88
|
+
begin
|
89
|
+
instance_eval(File.readlines(path).join("\n"))
|
90
|
+
rescue Object => e
|
91
|
+
puts "Exception caught trying to load map at #{path}"
|
92
|
+
puts e
|
87
93
|
end
|
88
94
|
end
|
89
95
|
|
96
|
+
protected
|
97
|
+
|
90
98
|
def prepare
|
91
99
|
trap 'INT' do
|
92
100
|
if @sent_an_int then
|
@@ -102,13 +110,18 @@ class Beholder
|
|
102
110
|
end
|
103
111
|
|
104
112
|
def start
|
105
|
-
|
113
|
+
startup_msg
|
106
114
|
@watcher = FSEvents::Stream.watch(paths_to_watch) do |event|
|
107
115
|
on_change(event.modified_files)
|
108
|
-
puts "\n\nWaiting
|
116
|
+
puts "\n\nWaiting for changes since #{Time.now}"
|
109
117
|
end
|
110
118
|
@watcher.run
|
111
|
-
end
|
119
|
+
end
|
120
|
+
|
121
|
+
def startup_msg
|
122
|
+
puts %[Beholder has loaded - CTRL-C once to reset, twice to quit.]
|
123
|
+
puts %[Watching the following paths: #{paths_to_watch.join(", ")}]
|
124
|
+
end
|
112
125
|
|
113
126
|
def read_default_map
|
114
127
|
map_for(:default) do |m|
|
@@ -180,6 +193,7 @@ class Beholder
|
|
180
193
|
end
|
181
194
|
|
182
195
|
private
|
196
|
+
|
183
197
|
def say(msg)
|
184
198
|
puts msg if verbose
|
185
199
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rsanheim-beholder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Humphries, Rob Sanheim
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-03-
|
12
|
+
date: 2009-03-23 00:00:00 -07:00
|
13
13
|
default_executable: beholder
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|