diff options
| author | Ethan Piekarski | 2015-09-06 15:25:36 +0800 |
|---|---|---|
| committer | Xu Cheng | 2015-09-06 15:25:36 +0800 |
| commit | eff3d213509df7c5702ab193a56f88611ff0722f (patch) | |
| tree | 7ee3b27f0cfa12c7a7593a23631ee7f2805306fa /Library/Homebrew | |
| parent | 8830e401a9332abd6d75261a7116851a2a9c135b (diff) | |
| download | brew-eff3d213509df7c5702ab193a56f88611ff0722f.tar.bz2 | |
Added --dry-run to unlink
Closes Homebrew/homebrew#43561.
Signed-off-by: Xu Cheng <xucheng@me.com>
Diffstat (limited to 'Library/Homebrew')
| -rw-r--r-- | Library/Homebrew/cmd/unlink.rb | 13 | ||||
| -rw-r--r-- | Library/Homebrew/keg.rb | 14 |
2 files changed, 22 insertions, 5 deletions
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 |
