diff options
| author | Jack Nagel | 2014-03-13 10:05:55 -0500 | 
|---|---|---|
| committer | Jack Nagel | 2014-03-13 10:05:57 -0500 | 
| commit | d965bbba4753a92512f2cb136a29e90bf6199e1f (patch) | |
| tree | 90ad3b7d3283f8dfe74a856be242be069859e570 /Library | |
| parent | 7dcb54a96314622c8319b8aa2a6669b778f87493 (diff) | |
| download | brew-d965bbba4753a92512f2cb136a29e90bf6199e1f.tar.bz2 | |
Allow the debugger to work from inside staged resources
References Homebrew/homebrew#23263.
Closes Homebrew/homebrew#27445.
Diffstat (limited to 'Library')
| -rwxr-xr-x | Library/Homebrew/build.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/debrew.rb | 21 | 
2 files changed, 23 insertions, 0 deletions
| diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 2d2bb861a..985d0bae4 100755 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -167,6 +167,8 @@ class Build        else          f.prefix.mkpath +        f.resources.each { |r| r.extend(ResourceDebugger) } if ARGV.debug? +          begin            f.install 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}" | 
