diff options
| author | Jack Nagel | 2014-04-21 09:40:23 -0500 | 
|---|---|---|
| committer | Jack Nagel | 2014-04-21 12:43:06 -0500 | 
| commit | a231de388b588d7db15c98699ef113154ca4c8ad (patch) | |
| tree | 3cf3c6301b66b05332471cc37162de2f1a21e67f /Library/Homebrew/extend/pathname.rb | |
| parent | 2991c60e6747e45b429b5288bdd0b259a23ab671 (diff) | |
| download | homebrew-a231de388b588d7db15c98699ef113154ca4c8ad.tar.bz2 | |
Rework make_relative_symlink error handling and move it into keg
Diffstat (limited to 'Library/Homebrew/extend/pathname.rb')
| -rw-r--r-- | Library/Homebrew/extend/pathname.rb | 49 | 
1 files changed, 3 insertions, 46 deletions
diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index f9b62ac56..9bd1275fd 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -290,53 +290,9 @@ class Pathname      (dirname+link).exist?    end -  # perhaps confusingly, this Pathname object becomes the symlink pointing to -  # the src paramter. -  def make_relative_symlink src +  def make_relative_symlink(src)      dirname.mkpath - -    dirname.cd do -      # NOTE only system ln -s will create RELATIVE symlinks -      return if quiet_system("ln", "-s", src.relative_path_from(dirname), basename) -    end - -    if symlink? && exist? -      raise <<-EOS.undent -        Could not symlink file: #{src} -        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 -    elsif exist? -      raise <<-EOS.undent -        Could not symlink file: #{src} -        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 - -        To list all files that would be deleted: -          brew link --overwrite --dry-run formula_name -        EOS -    elsif symlink? -      unlink -      make_relative_symlink(src) -    elsif !dirname.writable_real? -      raise <<-EOS.undent -        Could not symlink file: #{src} -        #{dirname} is not writable. You should change its permissions. -        EOS -    else -      raise <<-EOS.undent -        Could not symlink file: #{src} -        #{self} may already exist. -        #{dirname} may not be writable. -        EOS -    end +    File.symlink(src.relative_path_from(dirname), self)    end    def / that @@ -503,6 +459,7 @@ module ObserverPathnameExtension    end    def make_relative_symlink src      super +    puts "ln -s #{src.relative_path_from(dirname)} #{basename}" if ARGV.verbose?      ObserverPathnameExtension.n += 1    end    def install_info  | 
