diff options
| author | Mike McQuaid | 2016-11-11 16:42:29 +0000 |
|---|---|---|
| committer | Mike McQuaid | 2016-11-11 16:42:29 +0000 |
| commit | b32fafa82c4b9d6890685dc53fa52abcd1d1030f (patch) | |
| tree | f665de6194c272fac15d1bc0691858373437ccec /Library/Homebrew/formulary.rb | |
| parent | 8fea516dcdc68680c4841d2547be209f16d32203 (diff) | |
| download | brew-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.rb | 23 |
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") |
