aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/formulary.rb
diff options
context:
space:
mode:
authorMike McQuaid2016-11-11 16:42:29 +0000
committerMike McQuaid2016-11-11 16:42:29 +0000
commitb32fafa82c4b9d6890685dc53fa52abcd1d1030f (patch)
treef665de6194c272fac15d1bc0691858373437ccec /Library/Homebrew/formulary.rb
parent8fea516dcdc68680c4841d2547be209f16d32203 (diff)
downloadbrew-b32fafa82c4b9d6890685dc53fa52abcd1d1030f.tar.bz2
formulary: don't warn on old formula name from keg/rack.
If there’s an old installation of e.g. `apple-gcc42` from when it was part of `homebrew/core` then the tab will say it was from the `homebrew/core` tap and then we’ll complain at the user (see #1459 for an example). Instead, we only want to complain when the user actually types in `homebrew/core/apple-gcc42` into a `brew` command. Closes #1459.
Diffstat (limited to 'Library/Homebrew/formulary.rb')
-rw-r--r--Library/Homebrew/formulary.rb23
1 files changed, 12 insertions, 11 deletions
diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb
index 4d6832e44..772f4c902 100644
--- a/Library/Homebrew/formulary.rb
+++ b/Library/Homebrew/formulary.rb
@@ -158,8 +158,9 @@ class Formulary
class TapLoader < FormulaLoader
attr_reader :tap
- def initialize(tapped_name)
- name, path = formula_name_path(tapped_name)
+ def initialize(tapped_name, from: nil)
+ warn = ![:keg, :rack].include?(from)
+ name, path = formula_name_path(tapped_name, warn: warn)
super name, path
end
@@ -236,8 +237,8 @@ class Formulary
# * a formula pathname
# * a formula URL
# * a local bottle reference
- def self.factory(ref, spec = :stable, alias_path: nil)
- loader_for(ref).get_formula(spec, alias_path: alias_path)
+ def self.factory(ref, spec = :stable, alias_path: nil, from: nil)
+ loader_for(ref, from: from).get_formula(spec, alias_path: alias_path)
end
# Return a Formula instance for the given rack.
@@ -253,7 +254,7 @@ class Formulary
if keg
from_keg(keg, spec, alias_path: alias_path)
else
- factory(rack.basename.to_s, spec || :stable, alias_path: alias_path)
+ factory(rack.basename.to_s, spec || :stable, alias_path: alias_path, from: :rack)
end
end
@@ -265,13 +266,13 @@ class Formulary
spec ||= tab.spec
f = if tap.nil?
- factory(keg.rack.basename.to_s, spec, alias_path: alias_path)
+ factory(keg.rack.basename.to_s, spec, alias_path: alias_path, from: :keg)
else
begin
- factory("#{tap}/#{keg.rack.basename}", spec, alias_path: alias_path)
+ factory("#{tap}/#{keg.rack.basename}", spec, alias_path: alias_path, from: :keg)
rescue FormulaUnavailableError
# formula may be migrated to different tap. Try to search in core and all taps.
- factory(keg.rack.basename.to_s, spec, alias_path: alias_path)
+ factory(keg.rack.basename.to_s, spec, alias_path: alias_path, from: :keg)
end
end
f.build = tab
@@ -309,14 +310,14 @@ class Formulary
loader_for(ref).path
end
- def self.loader_for(ref)
+ def self.loader_for(ref, from: nil)
case ref
when %r{(https?|ftp|file)://}
return FromUrlLoader.new(ref)
when Pathname::BOTTLE_EXTNAME_RX
return BottleLoader.new(ref)
when HOMEBREW_TAP_FORMULA_REGEX
- return TapLoader.new(ref)
+ return TapLoader.new(ref, from: from)
end
return FromPathLoader.new(ref) if File.extname(ref) == ".rb"
@@ -359,7 +360,7 @@ class Formulary
end
unless possible_tap_newname_formulae.empty?
- return TapLoader.new(possible_tap_newname_formulae.first)
+ return TapLoader.new(possible_tap_newname_formulae.first, from: from)
end
possible_cached_formula = Pathname.new("#{HOMEBREW_CACHE_FORMULA}/#{ref}.rb")