From eff3d213509df7c5702ab193a56f88611ff0722f Mon Sep 17 00:00:00 2001 From: Ethan Piekarski Date: Sun, 6 Sep 2015 15:25:36 +0800 Subject: Added --dry-run to unlink Closes Homebrew/homebrew#43561. Signed-off-by: Xu Cheng --- Library/Homebrew/cmd/unlink.rb | 13 ++++++++++++- Library/Homebrew/keg.rb | 14 ++++++++++---- 2 files changed, 22 insertions(+), 5 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/cmd/unlink.rb b/Library/Homebrew/cmd/unlink.rb index 4833283ff..8779b2099 100644 --- a/Library/Homebrew/cmd/unlink.rb +++ b/Library/Homebrew/cmd/unlink.rb @@ -1,12 +1,23 @@ +require "ostruct" + module Homebrew def unlink raise KegUnspecifiedError if ARGV.named.empty? + mode = OpenStruct.new + mode.dry_run = true if ARGV.dry_run? + ARGV.kegs.each do |keg| + if mode.dry_run + puts "Would remove:" + keg.unlink(mode) + next + end + keg.lock do print "Unlinking #{keg}... " puts if ARGV.verbose? - puts "#{keg.unlink} symlinks removed" + puts "#{keg.unlink(mode)} symlinks removed" end end end diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index de2e2f2cc..1c6e7ffd9 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -186,7 +186,7 @@ class Keg remove_oldname_opt_record end - def unlink + def unlink(mode = OpenStruct.new) ObserverPathnameExtension.reset_counts! dirs = [] @@ -201,6 +201,11 @@ class Keg # check whether the file to be unlinked is from the current keg first if dst.symlink? && src == dst.resolved_path + if mode.dry_run + puts dst + next + end + dst.uninstall_info if dst.to_s =~ INFOFILE_RX dst.unlink Find.prune if src.directory? @@ -208,9 +213,10 @@ class Keg end end - remove_linked_keg_record if linked? - - dirs.reverse_each(&:rmdir_if_possible) + unless mode.dry_run + remove_linked_keg_record if linked? + dirs.reverse_each(&:rmdir_if_possible) + end ObserverPathnameExtension.total end -- cgit v1.2.3