aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJack Nagel2014-03-27 09:35:10 -0500
committerJack Nagel2014-03-27 09:35:10 -0500
commitf6b5c83482b9ebbd390831f41767f9dd9b33162f (patch)
treeaf377f8aee9e1ac547f55e06d42d2b3200e3daac /Library
parent714bfee8d9e7d1ba5c93952dd5986a4a5b425f0f (diff)
downloadbrew-f6b5c83482b9ebbd390831f41767f9dd9b33162f.tar.bz2
Fix conflicting symlink advice
Closes Homebrew/homebrew#27899.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/extend/pathname.rb13
1 files changed, 6 insertions, 7 deletions
diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb
index c9c233144..1ec35b9cd 100644
--- a/Library/Homebrew/extend/pathname.rb
+++ b/Library/Homebrew/extend/pathname.rb
@@ -298,23 +298,22 @@ class Pathname
# NOTE only system ln -s will create RELATIVE symlinks
quiet_system 'ln', '-s', src.relative_path_from(self.dirname), self.basename
if not $?.success?
- if self.exist?
+ if symlink? && exist? || symlink?
raise <<-EOS.undent
Could not symlink file: #{src.expand_path}
- Target #{self} already exists. You may need to delete it.
+ Target #{self} already exists as a symlink to #{readlink}.
+ If this file is from another formula, you may need to
+ `brew unlink` it. Otherwise, you may want to delete it.
To force the link and overwrite all other conflicting files, do:
brew link --overwrite formula_name
To list all files that would be deleted:
brew link --overwrite --dry-run formula_name
EOS
- # #exist? will return false for symlinks whose target doesn't exist
- elsif self.symlink?
+ elsif exist?
raise <<-EOS.undent
Could not symlink file: #{src.expand_path}
- Target #{self} already exists as a symlink to #{readlink}.
- If this file is from another formula, you may need to
- `brew unlink` it. Otherwise, you may want to delete it.
+ Target #{self} already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
brew link --overwrite formula_name