install: check if formula is already linked before fetching
This commit is contained in:
parent
d649f15d6d
commit
a96e286400
@ -209,6 +209,25 @@ module Homebrew
|
||||
Or to force-install it, run:
|
||||
brew install #{f} --force
|
||||
EOS
|
||||
elsif f.linked?
|
||||
message = "#{f.name} #{f.linked_version} is already installed"
|
||||
if f.outdated? && !head
|
||||
return true unless Homebrew::EnvConfig.no_install_upgrade?
|
||||
|
||||
onoe <<~EOS
|
||||
#{message}
|
||||
To upgrade to #{f.pkg_version}, run:
|
||||
brew upgrade #{f.full_name}
|
||||
EOS
|
||||
elsif only_dependencies
|
||||
return true
|
||||
else
|
||||
onoe <<~EOS
|
||||
#{message}
|
||||
To install #{f.pkg_version}, first run:
|
||||
brew unlink #{f.name}
|
||||
EOS
|
||||
end
|
||||
else
|
||||
# If none of the above is true and the formula is linked, then
|
||||
# FormulaInstaller will handle this case.
|
||||
@ -281,41 +300,23 @@ module Homebrew
|
||||
end.compact
|
||||
|
||||
formula_installers.each do |fi|
|
||||
install_formula(fi, only_deps: only_deps)
|
||||
install_formula(fi)
|
||||
Cleanup.install_formula_clean!(fi.formula)
|
||||
end
|
||||
end
|
||||
|
||||
def install_formula(formula_installer, only_deps: false)
|
||||
def install_formula(formula_installer)
|
||||
f = formula_installer.formula
|
||||
|
||||
formula_installer.prelude
|
||||
|
||||
f.print_tap_action
|
||||
|
||||
if f.linked_keg.directory?
|
||||
if Homebrew::EnvConfig.no_install_upgrade?
|
||||
message = <<~EOS
|
||||
#{f.name} #{f.linked_version} is already installed
|
||||
EOS
|
||||
message += if f.outdated? && !f.head?
|
||||
<<~EOS
|
||||
To upgrade to #{f.pkg_version}, run:
|
||||
brew upgrade #{f.full_name}
|
||||
EOS
|
||||
else
|
||||
<<~EOS
|
||||
To install #{f.pkg_version}, first run:
|
||||
brew unlink #{f.name}
|
||||
EOS
|
||||
end
|
||||
raise CannotInstallFormulaError, message unless only_deps
|
||||
elsif f.outdated? && !f.head?
|
||||
puts "#{f.name} #{f.linked_version} is installed but outdated"
|
||||
kegs = Upgrade.outdated_kegs(f)
|
||||
linked_kegs = kegs.select(&:linked?)
|
||||
Upgrade.print_upgrade_message(f, formula_installer.options)
|
||||
end
|
||||
if f.linked? && f.outdated? && !f.head? && !Homebrew::EnvConfig.no_install_upgrade?
|
||||
puts "#{f.full_name} #{f.linked_version} is installed but outdated"
|
||||
kegs = Upgrade.outdated_kegs(f)
|
||||
linked_kegs = kegs.select(&:linked?)
|
||||
Upgrade.print_upgrade_message(f, formula_installer.options)
|
||||
end
|
||||
|
||||
kegs.each(&:unlink) if kegs.present?
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user