aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/extend/pathname.rb22
1 files changed, 17 insertions, 5 deletions
diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb
index 797c89b7e..454afb074 100644
--- a/Library/Homebrew/extend/pathname.rb
+++ b/Library/Homebrew/extend/pathname.rb
@@ -293,11 +293,23 @@ 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?
- raise <<-EOS.undent
- Could not symlink file: #{src.expand_path}
- Check #{self} does not already exist.
- Check #{dirname} is writable.
- EOS
+ if self.exist?
+ raise <<-EOS.undent
+ Could not symlink file: #{src.expand_path}
+ Target #{self} already exists. You may need to delete it.
+ EOS
+ elsif !dirname.writable?
+ raise <<-EOS.undent
+ Could not symlink file: #{src.expand_path}
+ #{dirname} is not writable. You should change its permissions.
+ EOS
+ else
+ raise <<-EOS.undent
+ Could not symlink file: #{src.expand_path}
+ #{self} may already exist.
+ #{dirname} may not be writable.
+ EOS
+ end
end
end
end