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.
This commit is contained in:
Max Howell 2012-08-14 11:21:33 -04:00
parent 9fffbde987
commit fef6d5b8c0

View File

@ -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