aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorXu Cheng2014-12-08 00:13:57 +0800
committerMike McQuaid2014-12-09 12:59:04 +0000
commit89bcb2a4eb8c629d0587efcd2ffd77da62364d2d (patch)
tree9dd644d92054108906e3c331d9f2cd77888fce1b /Library/Homebrew
parent787e782fd9ff3048ab5477e4488c49bd41436187 (diff)
downloadhomebrew-89bcb2a4eb8c629d0587efcd2ffd77da62364d2d.tar.bz2
brew-doctor: warning the external commands with conflicting names
Closes #34755. Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/cmd/doctor.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb
index d7f853851..820dd8897 100644
--- a/Library/Homebrew/cmd/doctor.rb
+++ b/Library/Homebrew/cmd/doctor.rb
@@ -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