Simplify tap formula loading

This commit is contained in:
Jack Nagel 2014-04-05 22:03:33 -05:00
parent e008ceb332
commit 757c8ade0b

View File

@ -147,14 +147,19 @@ class Formulary
# Loads tapped formulae.
class TapLoader < FormulaLoader
attr_reader :tapped_name
def initialize tapped_name
super tapped_name, Pathname.new(tapped_name)
@tapped_name = tapped_name
user, repo, name = tapped_name.split("/", 3).map(&:downcase)
path = Pathname.new("#{HOMEBREW_LIBRARY}/Taps/#{user}-#{repo}/#{name}.rb")
super name, path
end
def get_formula
super
rescue FormulaUnavailableError => e
raise TapFormulaUnavailableError.new(e.name)
rescue FormulaUnavailableError
raise TapFormulaUnavailableError.new(tapped_name)
end
end
@ -174,23 +179,9 @@ class Formulary
return FromUrlLoader.new(ref)
when Pathname::BOTTLE_EXTNAME_RX
return BottleLoader.new(ref)
end
if ref =~ HOMEBREW_TAP_FORMULA_REGEX
tap_name = "#$1-#$2".downcase
tapd = Pathname.new("#{HOMEBREW_LIBRARY}/Taps/#{tap_name}")
if tapd.directory?
tapd.find_formula do |relative_pathname|
path = "#{tapd}/#{relative_pathname}"
if relative_pathname.stem.to_s == $3
return FromPathLoader.new(path)
end
end
else
when HOMEBREW_TAP_FORMULA_REGEX
return TapLoader.new(ref)
end
end
if ref.include?("/") || File.extname(ref) == ".rb"
return FromPathLoader.new(ref)