-
-
Notifications
You must be signed in to change notification settings - Fork 205
/
build_monitor.rb
56 lines (44 loc) · 901 Bytes
/
build_monitor.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
module EmberCli
class BuildMonitor
def initialize(name, paths)
@name = name
@paths = paths
end
def check!
if build_error?
raise_build_error!
end
true
end
def reset
if build_error?
error_file.delete
end
end
def wait!
loop do
check!
break if complete?
sleep 0.1
end
end
private
attr_reader :name, :paths
def complete?
!paths.lockfile.exist?
end
def build_error?
error_file.exist? && error_file.size?
end
def error_file
paths.build_error_file
end
def raise_build_error!
backtrace = error_file.readlines.reject(&:blank?)
message = "#{name.inspect} has failed to build: #{backtrace.first}"
error = BuildError.new(message)
error.set_backtrace(backtrace)
fail error
end
end
end