aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
authorEthan Piekarski2015-09-06 15:25:36 +0800
committerXu Cheng2015-09-06 15:25:36 +0800
commiteff3d213509df7c5702ab193a56f88611ff0722f (patch)
tree7ee3b27f0cfa12c7a7593a23631ee7f2805306fa /Library/Homebrew
parent8830e401a9332abd6d75261a7116851a2a9c135b (diff)
downloadbrew-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.rb13
-rw-r--r--Library/Homebrew/keg.rb14
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