aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/install.rb6
-rw-r--r--Library/Homebrew/keg.rb13
2 files changed, 19 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb
index 4b2711994..07942f64e 100644
--- a/Library/Homebrew/cmd/install.rb
+++ b/Library/Homebrew/cmd/install.rb
@@ -9,6 +9,12 @@ module Homebrew extend self
raise "No available formula for #{name}\n#{msg}" if msg
end unless ARGV.force?
+ ARGV.formulae.each do |f|
+ if File.directory? HOMEBREW_REPOSITORY/"Library/LinkedKegs/#{f.name}"
+ raise "#{f} already installed\nTry: brew upgrade #{f}"
+ end
+ end
+
if Process.uid.zero? and not File.stat(HOMEBREW_BREW_FILE).uid.zero?
# note we only abort if Homebrew is *not* installed as sudo and the user
# calls brew as root. The fix is to chown brew to root.
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index ad0e97653..a0d028d08 100644
--- a/Library/Homebrew/keg.rb
+++ b/Library/Homebrew/keg.rb
@@ -33,10 +33,21 @@ class Keg < Pathname
n+=1
Find.prune if src.directory?
end
+ linked_keg_record.unlink if linked_keg_record.exist?
n
end
+ def fname
+ parent.basename.to_s
+ end
+
+ def linked_keg_record
+ @linked_keg_record ||= HOMEBREW_REPOSITORY/"Library/LinkedKegs"/fname
+ end
+
def link
+ raise "Cannot link #{fname}\nAnother version is already linked: #{linked_keg_record.realpath}" if linked_keg_record.directory?
+
$n=0
$d=0
@@ -68,6 +79,8 @@ class Keg < Pathname
end
end
+ (HOMEBREW_REPOSITORY/"Library/LinkedKegs"/fname).make_relative_symlink(self)
+
return $n+$d
end