Allow the debugger to work from inside staged resources
References Homebrew/homebrew#23263. Closes Homebrew/homebrew#27445.
This commit is contained in:
parent
7dcb54a963
commit
d965bbba47
@ -167,6 +167,8 @@ class Build
|
||||
else
|
||||
f.prefix.mkpath
|
||||
|
||||
f.resources.each { |r| r.extend(ResourceDebugger) } if ARGV.debug?
|
||||
|
||||
begin
|
||||
f.install
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
require 'debrew/menu'
|
||||
require 'debrew/raise_plus'
|
||||
require 'set'
|
||||
|
||||
unless ENV['HOMEBREW_NO_READLINE']
|
||||
begin
|
||||
@ -15,7 +16,27 @@ class Object
|
||||
include RaisePlus
|
||||
end
|
||||
|
||||
module ResourceDebugger
|
||||
def stage(&block)
|
||||
super do
|
||||
begin
|
||||
block.call(self)
|
||||
rescue Exception => e
|
||||
if ARGV.debug?
|
||||
debrew e
|
||||
else
|
||||
raise
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
$debugged_exceptions = Set.new
|
||||
|
||||
def debrew(exception, formula=nil)
|
||||
raise exception unless $debugged_exceptions.add?(exception)
|
||||
|
||||
puts "#{exception.backtrace.first}"
|
||||
puts "#{Tty.red}#{exception.class.to_s}#{Tty.reset}: #{exception.to_s}"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user