Merge pull request #8376 from MLH-Fellowship/warn-conflicting-cask

named args: Warn when user references a formula with the same name as a cask
This commit is contained in:
Mike McQuaid 2020-08-18 09:20:00 +01:00 committed by GitHub
commit b932299222
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 24 additions and 24 deletions

View File

@ -26,6 +26,8 @@ module Homebrew
downcased_unique_named.each do |name| downcased_unique_named.each do |name|
formulae_and_casks << Formulary.factory(name, spec) formulae_and_casks << Formulary.factory(name, spec)
puts "Treating #{name} as a formula. For the cask, use homebrew/cask/#{name}" if cask_exists_with_ref name
rescue FormulaUnavailableError rescue FormulaUnavailableError
begin begin
formulae_and_casks << Cask::CaskLoader.load(name) formulae_and_casks << Cask::CaskLoader.load(name)
@ -51,6 +53,8 @@ module Homebrew
downcased_unique_named.each do |name| downcased_unique_named.each do |name|
resolved_formulae << Formulary.resolve(name, spec: spec(nil), force_bottle: @force_bottle, flags: @flags) resolved_formulae << Formulary.resolve(name, spec: spec(nil), force_bottle: @force_bottle, flags: @flags)
puts "Treating #{name} as a formula. For the cask, use homebrew/cask/#{name}" if cask_exists_with_ref name
rescue FormulaUnavailableError rescue FormulaUnavailableError
begin begin
casks << Cask::CaskLoader.load(name) casks << Cask::CaskLoader.load(name)
@ -91,6 +95,8 @@ module Homebrew
downcased_unique_named.each do |name| downcased_unique_named.each do |name|
kegs << resolve_keg(name) kegs << resolve_keg(name)
puts "Treating #{name} as a keg. For the cask, use homebrew/cask/#{name}" if cask_exists_with_ref name
rescue NoSuchKegError, FormulaUnavailableError rescue NoSuchKegError, FormulaUnavailableError
begin begin
casks << Cask::CaskLoader.load(name) casks << Cask::CaskLoader.load(name)
@ -163,6 +169,12 @@ module Homebrew
EOS EOS
end end
end end
def cask_exists_with_ref(ref)
Cask::CaskLoader.load ref
rescue Cask::CaskUnavailableError
false
end
end end
end end
end end

View File

@ -25,10 +25,7 @@ module Homebrew
end end
homepages = args.formulae_and_casks.map do |formula_or_cask| homepages = args.formulae_and_casks.map do |formula_or_cask|
disclaimer = disclaimers(formula_or_cask) puts "Opening homepage for #{name_of(formula_or_cask)}"
disclaimer = " (#{disclaimer})" if disclaimer.present?
puts "Opening homepage for #{name_of(formula_or_cask)}#{disclaimer}"
formula_or_cask.homepage formula_or_cask.homepage
end end
@ -42,15 +39,4 @@ module Homebrew
"Cask #{formula_or_cask.token}" "Cask #{formula_or_cask.token}"
end end
end end
def disclaimers(formula_or_cask)
return unless formula_or_cask.is_a? Formula
begin
cask = Cask::CaskLoader.load formula_or_cask.name
"for the cask, use #{cask.tap.name}/#{cask.token}"
rescue Cask::CaskUnavailableError
nil
end
end
end end

View File

@ -39,8 +39,7 @@ describe Homebrew::CLI::NamedArgs do
describe "#to_formulae" do describe "#to_formulae" do
it "returns formulae" do it "returns formulae" do
allow(Formulary).to receive(:loader_for).and_call_original stub_formula_loader foo, call_original: true
stub_formula_loader foo
stub_formula_loader bar stub_formula_loader bar
expect(described_class.new("foo", "bar").to_formulae).to eq [foo, bar] expect(described_class.new("foo", "bar").to_formulae).to eq [foo, bar]
@ -49,9 +48,8 @@ describe Homebrew::CLI::NamedArgs do
describe "#to_formulae_and_casks" do describe "#to_formulae_and_casks" do
it "returns formulae and casks" do it "returns formulae and casks" do
allow(Formulary).to receive(:loader_for).and_call_original stub_formula_loader foo, call_original: true
stub_formula_loader foo stub_cask_loader baz, call_original: true
stub_cask_loader baz
expect(described_class.new("foo", "baz").to_formulae_and_casks).to eq [foo, baz] expect(described_class.new("foo", "baz").to_formulae_and_casks).to eq [foo, baz]
end end
@ -69,7 +67,7 @@ describe Homebrew::CLI::NamedArgs do
it "returns resolved formulae, as well as casks" do it "returns resolved formulae, as well as casks" do
allow(Formulary).to receive(:resolve).and_call_original allow(Formulary).to receive(:resolve).and_call_original
allow(Formulary).to receive(:resolve).with("foo", any_args).and_return foo allow(Formulary).to receive(:resolve).with("foo", any_args).and_return foo
stub_cask_loader baz stub_cask_loader baz, call_original: true
resolved_formulae, casks = described_class.new("foo", "baz").to_resolved_formulae_to_casks resolved_formulae, casks = described_class.new("foo", "baz").to_resolved_formulae_to_casks
@ -101,7 +99,7 @@ describe Homebrew::CLI::NamedArgs do
named_args = described_class.new("foo", "baz") named_args = described_class.new("foo", "baz")
allow(named_args).to receive(:resolve_keg).and_call_original allow(named_args).to receive(:resolve_keg).and_call_original
allow(named_args).to receive(:resolve_keg).with("foo").and_return foo_keg allow(named_args).to receive(:resolve_keg).with("foo").and_return foo_keg
stub_cask_loader baz stub_cask_loader baz, call_original: true
kegs, casks = named_args.to_kegs_to_casks kegs, casks = named_args.to_kegs_to_casks

View File

@ -5,7 +5,9 @@ require "cask/cask_loader"
module Test module Test
module Helper module Helper
module Cask module Cask
def stub_cask_loader(cask, ref = cask.token) def stub_cask_loader(cask, ref = cask.token, call_original: false)
allow(::Cask::CaskLoader).to receive(:for).and_call_original if call_original
loader = ::Cask::CaskLoader::FromInstanceLoader.new cask loader = ::Cask::CaskLoader::FromInstanceLoader.new cask
allow(::Cask::CaskLoader).to receive(:for).with(ref).and_return(loader) allow(::Cask::CaskLoader).to receive(:for).with(ref).and_return(loader)
end end

View File

@ -11,7 +11,9 @@ module Test
# Use a stubbed {Formulary::FormulaLoader} to make a given formula be found # Use a stubbed {Formulary::FormulaLoader} to make a given formula be found
# when loading from {Formulary} with `ref`. # when loading from {Formulary} with `ref`.
def stub_formula_loader(formula, ref = formula.full_name) def stub_formula_loader(formula, ref = formula.full_name, call_original: false)
allow(Formulary).to receive(:loader_for).and_call_original if call_original
loader = double(get_formula: formula) loader = double(get_formula: formula)
allow(Formulary).to receive(:loader_for).with(ref, from: :keg).and_return(loader) allow(Formulary).to receive(:loader_for).with(ref, from: :keg).and_return(loader)
allow(Formulary).to receive(:loader_for).with(ref, from: nil).and_return(loader) allow(Formulary).to receive(:loader_for).with(ref, from: nil).and_return(loader)