brew-doctor: warning the external commands with conflicting names

Closes Homebrew/homebrew#34755.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
This commit is contained in:
Xu Cheng 2014-12-08 00:13:57 +08:00 committed by Mike McQuaid
parent 775cfd9117
commit 5310d16686

View File

@ -1181,6 +1181,25 @@ end
EOS
end
def check_for_external_cmd_name_conflict
cmds = paths.map { |p| Dir["#{p}/brew-*"] }.flatten.uniq
cmds = cmds.select { |cmd| File.file?(cmd) && File.executable?(cmd) }
cmd_map = {}
cmds.each do |cmd|
cmd_name = File.basename(cmd, ".rb")
cmd_map[cmd_name] ||= []
cmd_map[cmd_name] << cmd
end
cmd_map.reject! { |cmd_name, cmd_paths| cmd_paths.size == 1 }
return if cmd_map.empty?
s = "You have external commands with conflicting names."
cmd_map.each do |cmd_name, cmd_paths|
s += "\n\nFound command `#{cmd_name}` in following places:\n"
s += cmd_paths.map { |f| " #{f}" }.join("\n")
end
s
end
def all
methods.map(&:to_s).grep(/^check_/)
end