aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/debrew.rb
diff options
context:
space:
mode:
authorJack Nagel2014-03-13 10:05:55 -0500
committerJack Nagel2014-03-13 10:05:57 -0500
commitd965bbba4753a92512f2cb136a29e90bf6199e1f (patch)
tree90ad3b7d3283f8dfe74a856be242be069859e570 /Library/Homebrew/debrew.rb
parent7dcb54a96314622c8319b8aa2a6669b778f87493 (diff)
downloadbrew-d965bbba4753a92512f2cb136a29e90bf6199e1f.tar.bz2
Allow the debugger to work from inside staged resources
References Homebrew/homebrew#23263. Closes Homebrew/homebrew#27445.
Diffstat (limited to 'Library/Homebrew/debrew.rb')
-rw-r--r--Library/Homebrew/debrew.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/Library/Homebrew/debrew.rb b/Library/Homebrew/debrew.rb
index e0d562cc9..2946533e2 100644
--- a/Library/Homebrew/debrew.rb
+++ b/Library/Homebrew/debrew.rb
@@ -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}"