brew/Library/Homebrew/cmd/doctor.rb

85 lines
2.4 KiB
Ruby
Raw Normal View History

2020-10-10 14:16:11 +02:00
# typed: false
# frozen_string_literal: true
require "diagnostic"
2019-04-17 18:25:08 +09:00
require "cli/parser"
require "cask/caskroom"
module Homebrew
2020-10-20 12:03:48 +02:00
extend T::Sig
2016-09-26 01:44:51 +02:00
module_function
2020-10-20 12:03:48 +02:00
sig { returns(CLI::Parser) }
2018-10-24 15:58:35 +05:30
def doctor_args
Homebrew::CLI::Parser.new do
usage_banner <<~EOS
`doctor` [<options>]
Check your system for potential problems. Will exit with a non-zero status
2018-10-24 15:58:35 +05:30
if any potential problems are found. Please note that these warnings are just
used to help the Homebrew maintainers with debugging if you file an issue. If
everything you use Homebrew for is working fine: please don't worry or file
an issue; just ignore this.
EOS
switch "--list-checks",
2019-12-12 19:04:01 -05:00
description: "List all audit methods, which can be run individually "\
"if provided as arguments."
2018-10-24 15:58:35 +05:30
switch "-D", "--audit-debug",
2019-04-30 08:44:35 +01:00
description: "Enable debugging and profiling of audit methods."
2018-10-24 15:58:35 +05:30
end
end
2010-11-09 13:00:33 +00:00
def doctor
2020-07-30 18:40:10 +02:00
args = doctor_args.parse
2018-10-24 15:58:35 +05:30
inject_dump_stats!(Diagnostic::Checks, /^check_*/) if args.audit_debug?
2020-08-19 17:12:32 +01:00
checks = Diagnostic::Checks.new(verbose: args.verbose?)
2018-10-24 15:58:35 +05:30
if args.list_checks?
puts checks.all.sort
return
2012-11-13 16:49:43 -06:00
end
if args.no_named?
slow_checks = %w[
check_for_broken_symlinks
check_missing_deps
]
methods = (checks.all.sort - slow_checks) + slow_checks
methods -= checks.cask_checks if Cask::Caskroom.casks.blank?
else
methods = args.named
end
first_warning = true
methods.each do |method|
2019-11-29 14:54:41 -05:00
$stderr.puts Formatter.headline("Checking #{method}", color: :magenta) if args.debug?
unless checks.respond_to?(method)
Homebrew.failed = true
puts "No check available by the name: #{method}"
next
end
out = checks.send(method)
2020-12-01 17:04:59 +00:00
next if out.blank?
2018-09-17 02:45:00 +02:00
2016-09-10 10:24:56 +01:00
if first_warning
2017-10-15 02:28:32 +02:00
$stderr.puts <<~EOS
2016-08-30 21:38:13 +02:00
#{Tty.bold}Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!#{Tty.reset}
2016-09-10 10:24:56 +01:00
EOS
end
2016-09-10 10:24:56 +01:00
$stderr.puts
opoo out
Homebrew.failed = true
first_warning = false
end
2010-11-09 13:00:33 +00:00
puts "Your system is ready to brew." unless Homebrew.failed?
end
end