diff options
| author | Max Howell | 2012-08-14 11:21:33 -0400 |
|---|---|---|
| committer | Max Howell | 2012-08-14 11:46:18 -0400 |
| commit | a2e5ece12620dd1e8f20fb6dfa89a0af498bfdb0 (patch) | |
| tree | a69c9b1b99d526bce68c75cefaecb89e86f9b121 | |
| parent | 0a45d96b21a5056e5131f136e94533a6a57bf808 (diff) | |
| download | homebrew-a2e5ece12620dd1e8f20fb6dfa89a0af498bfdb0.tar.bz2 | |
`brew doctor -D` (diagnostic-dump)
-D is now the switch for diagnostic-dumps. Let it be so.
Shows how long each doctor method takes in a sorted table at end. I used this to move the two slowest methods to the end of the doctor run so that as much useful information can be shown as quickly as possible.
Also now possible to specify on command line which tests should be run.
| -rw-r--r-- | Library/Homebrew/cmd/doctor.rb | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index 41f952b1e..6f7d29343 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -706,7 +706,7 @@ def __check_linked_brew f return links_found end -def check_for_linked_kegonly_brews +def check_for_linked_keg_only_brews require 'formula' warnings = Hash.new @@ -933,7 +933,16 @@ module Homebrew extend self def doctor checks = Checks.new - checks.methods.select{ |method| method =~ /^check_/ }.sort.each do |method| + inject_dump_stats(checks) if ARGV.switch? 'D' + + methods = if ARGV.named.empty? + # put slowest methods last + checks.methods.sort << "check_for_linked_keg_only_brews" << "check_for_outdated_homebrew" + else + ARGV.named + end.select{ |method| method =~ /^check_/ }.uniq + + methods.each do |method| out = checks.send(method) unless out.nil? or out.empty? lines = out.to_s.split('\n') @@ -945,4 +954,20 @@ module Homebrew extend self puts "Your system is raring to brew." unless Homebrew.failed? end + + def inject_dump_stats checks + class << checks + alias_method :oldsend, :send + def send method + time = Time.now + oldsend(method) + ensure + $times[method] = Time.now - time + end + end + $times = {} + at_exit { + puts $times.sort_by{|k, v| v }.map{|k, v| "#{k}: #{v}"} + } + end end |
