aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-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