-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcore.rb
36 lines (32 loc) · 872 Bytes
/
core.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
require_relative "diag"
module RNinja
module Core
@@errrored = false
@@quiet = false
@@verbose = false
def self.error!; @@errored = true end
def self.error?; @@errored end
def self.quiet?; @@quiet end
def self.quiet=(value) @@quiet = value end
def self.verbose?; @@verbose end
def self.verbose=(value) @@verbose = value end
def self.diag
Diagnostics.new(
on_error: lambda{ self.error! },
quiet: lambda{ self.quiet? },
verbose: lambda{ self.verbose? },
)
end
def self.run_diag
begin
[true, yield]
rescue Diagnostics::DiagnosticError
[false, nil]
rescue => e
$stderr << e.backtrace[0] << ":#{e.to_s} (#{e.class})\n" <<
e.backtrace[1..-1].map{|e2| " " * 8 + "from " << e2.to_s << "\n"}.join
error!
end
end
end
end