Don't return nil from Formula#linked_keg

Doing so was the result of a quick hack to fix the "deps installed as
upgrades don't get linked" bug, but it was a mistake. Instead, always
return the LinkedKegs entry as a Pathname object, and let callers be
responsible for checking that it exists.

Signed-off-by: Jack Nagel <jacknagel@gmail.com>
This commit is contained in:
Jack Nagel 2012-02-10 17:21:48 -06:00
parent ddde478f63
commit c1fecab365
4 changed files with 4 additions and 5 deletions

View File

@ -12,7 +12,7 @@ module Homebrew extend self
end unless ARGV.force?
ARGV.formulae.each do |f|
if File.directory? HOMEBREW_REPOSITORY/"Library/LinkedKegs/#{f.name}"
if f.linked_keg.directory?
raise "#{f} already installed\nTry: brew upgrade #{f}"
end
end unless ARGV.force?

View File

@ -69,8 +69,7 @@ class Formula
end
def linked_keg
keg = Pathname.new(HOMEBREW_REPOSITORY/"Library/LinkedKegs"/@name)
if keg.exist? then Keg.new(keg.realpath) else nil end
HOMEBREW_REPOSITORY/'Library/LinkedKegs'/@name
end
def installed_prefix

View File

@ -66,7 +66,7 @@ class FormulaInstaller
fi.show_header = false
oh1 "Installing #{f} dependency: #{dep}"
fi.install
dep.linked_keg.unlink if dep.linked_keg
Keg.new(dep.linked_keg.realpath).unlink if dep.linked_keg.directory?
fi.caveats
fi.finish
end

View File

@ -46,7 +46,7 @@ class Tab < OpenStruct
def self.for_formula f
f = Formula.factory f unless f.kind_of? Formula
path = HOMEBREW_REPOSITORY + 'Library' + 'LinkedKegs' + f.name + 'INSTALL_RECEIPT.json'
path = f.linked_keg/'INSTALL_RECEIPT.json'
if path.exist?
self.from_file path