Merge pull request #1676 from MikeMcQuaid/doctor-tap-repo-bad-ruby-files

diagnostic: check for bad tap files.
This commit is contained in:
Mike McQuaid 2016-12-25 21:21:58 +00:00 committed by GitHub
commit aaf70eb696
2 changed files with 28 additions and 1 deletions

View File

@ -1087,6 +1087,29 @@ module Homebrew
message
end
def check_for_tap_ruby_files_locations
bad_tap_files = {}
Tap.each do |tap|
unused_formula_dirs = tap.potential_formula_dirs - [tap.formula_dir]
unused_formula_dirs.each do |dir|
next unless dir.exist?
dir.children.each do |path|
next unless path.extname == ".rb"
bad_tap_files[tap] ||= []
bad_tap_files[tap] << path
end
end
end
return if bad_tap_files.empty?
bad_tap_files.keys.map do |tap|
<<-EOS.undent
Found Ruby file outside #{tap} tap formula directory
(#{tap.formula_dir}):
#{bad_tap_files[tap].join("\n ")}
EOS
end.join("\n")
end
def all
methods.map(&:to_s).grep(/^check_/)
end

View File

@ -292,7 +292,11 @@ class Tap
# path to the directory of all {Formula} files for this {Tap}.
def formula_dir
@formula_dir ||= [path/"Formula", path/"HomebrewFormula", path].detect(&:directory?)
@formula_dir ||= potential_formula_dirs.detect(&:directory?)
end
def potential_formula_dirs
@potential_formula_dirs ||= [path/"Formula", path/"HomebrewFormula", path].freeze
end
# path to the directory of all {Cask} files for this {Tap}.