Return early so we can reduce nesting of conditionals

This commit is contained in:
Jack Nagel 2014-03-27 18:39:54 -05:00
parent ed0be26c77
commit 4e918666d7

View File

@ -291,49 +291,49 @@ class Pathname
# perhaps confusingly, this Pathname object becomes the symlink pointing to # perhaps confusingly, this Pathname object becomes the symlink pointing to
# the src paramter. # the src paramter.
def make_relative_symlink src def make_relative_symlink src
self.dirname.mkpath dirname.mkpath
Dir.chdir self.dirname do
dirname.cd do
# NOTE only system ln -s will create RELATIVE symlinks # NOTE only system ln -s will create RELATIVE symlinks
quiet_system 'ln', '-s', src.relative_path_from(self.dirname), self.basename return if quiet_system("ln", "-s", src.relative_path_from(dirname), basename)
if not $?.success? 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: if symlink? && exist?
brew link --overwrite --dry-run formula_name raise <<-EOS.undent
EOS Could not symlink file: #{src}
elsif exist? Target #{self} already exists as a symlink to #{readlink}.
raise <<-EOS.undent If this file is from another formula, you may need to
Could not symlink file: #{src} `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:
To force the link and overwrite all other conflicting files, do: brew link --overwrite formula_name
brew link --overwrite formula_name
To list all files that would be deleted: To list all files that would be deleted:
brew link --overwrite --dry-run formula_name brew link --overwrite --dry-run formula_name
EOS EOS
elsif symlink? elsif exist?
unlink raise <<-EOS.undent
make_relative_symlink(src) Could not symlink file: #{src}
elsif !dirname.writable_real? Target #{self} already exists. You may need to delete it.
raise <<-EOS.undent To force the link and overwrite all other conflicting files, do:
Could not symlink file: #{src} brew link --overwrite formula_name
#{dirname} is not writable. You should change its permissions.
EOS To list all files that would be deleted:
else brew link --overwrite --dry-run formula_name
raise <<-EOS.undent EOS
Could not symlink file: #{src} elsif symlink?
#{self} may already exist. unlink
#{dirname} may not be writable. make_relative_symlink(src)
EOS elsif !dirname.writable_real?
end raise <<-EOS.undent
end 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 end
end end