Make usage of ObserverPathnameExtension more obvious
Remove use of globals. Closes Homebrew/homebrew#21795.
This commit is contained in:
parent
23fbe23426
commit
966e82663f
@ -2,12 +2,9 @@ require 'keg'
|
||||
require 'cmd/tap'
|
||||
|
||||
module Homebrew extend self
|
||||
# $n and $d are used by the ObserverPathnameExtension to keep track of
|
||||
# certain filesystem actions.
|
||||
|
||||
def prune
|
||||
$n = 0
|
||||
$d = 0
|
||||
ObserverPathnameExtension.reset_counts!
|
||||
|
||||
dirs = []
|
||||
|
||||
Keg::PRUNEABLE_DIRECTORIES.select(&:directory?).each do |dir|
|
||||
@ -41,11 +38,13 @@ module Homebrew extend self
|
||||
|
||||
repair_taps unless ARGV.dry_run?
|
||||
|
||||
if $n == 0 && $d == 0
|
||||
n, d = ObserverPathnameExtension.counts
|
||||
|
||||
if ObserverPathnameExtension.total.zero?
|
||||
puts "Nothing pruned" if ARGV.verbose?
|
||||
else
|
||||
print "Pruned #{$n} symbolic links "
|
||||
print "and #{$d} directories " if $d > 0
|
||||
print "Pruned #{n} symbolic links "
|
||||
print "and #{d} directories " if d > 0
|
||||
puts "from #{HOMEBREW_PREFIX}"
|
||||
end unless ARGV.dry_run?
|
||||
end
|
||||
|
||||
@ -433,21 +433,36 @@ class Pathname
|
||||
end
|
||||
end
|
||||
|
||||
# sets $n and $d so you can observe creation of stuff
|
||||
module ObserverPathnameExtension
|
||||
class << self
|
||||
attr_accessor :n, :d
|
||||
|
||||
def reset_counts!
|
||||
@n = @d = 0
|
||||
end
|
||||
|
||||
def total
|
||||
n + d
|
||||
end
|
||||
|
||||
def counts
|
||||
[n, d]
|
||||
end
|
||||
end
|
||||
|
||||
def unlink
|
||||
super
|
||||
puts "rm #{to_s}" if ARGV.verbose?
|
||||
$n+=1
|
||||
ObserverPathnameExtension.n += 1
|
||||
end
|
||||
def rmdir
|
||||
super
|
||||
puts "rmdir #{to_s}" if ARGV.verbose?
|
||||
$d+=1
|
||||
ObserverPathnameExtension.d += 1
|
||||
end
|
||||
def make_relative_symlink src
|
||||
super
|
||||
$n+=1
|
||||
ObserverPathnameExtension.n += 1
|
||||
end
|
||||
def install_info
|
||||
super
|
||||
@ -458,6 +473,3 @@ module ObserverPathnameExtension
|
||||
puts "uninfo #{to_s}" if ARGV.verbose?
|
||||
end
|
||||
end
|
||||
|
||||
$n=0
|
||||
$d=0
|
||||
|
||||
@ -33,9 +33,7 @@ class Keg < Pathname
|
||||
end
|
||||
|
||||
def unlink
|
||||
# these are used by the ObserverPathnameExtension to count the number
|
||||
# of files and directories linked
|
||||
$n=$d=0
|
||||
ObserverPathnameExtension.reset_counts!
|
||||
|
||||
dirs = []
|
||||
|
||||
@ -62,7 +60,7 @@ class Keg < Pathname
|
||||
|
||||
dirs.reverse_each(&:rmdir_if_possible)
|
||||
|
||||
$n+$d
|
||||
ObserverPathnameExtension.total
|
||||
end
|
||||
|
||||
def fname
|
||||
@ -108,8 +106,7 @@ class Keg < Pathname
|
||||
def link mode=OpenStruct.new
|
||||
raise "Cannot link #{fname}\nAnother version is already linked: #{linked_keg_record.realpath}" if linked_keg_record.directory?
|
||||
|
||||
$n=0
|
||||
$d=0
|
||||
ObserverPathnameExtension.reset_counts!
|
||||
|
||||
share_mkpaths = %w[aclocal doc info locale man]
|
||||
share_mkpaths.concat((1..8).map { |i| "man/man#{i}" })
|
||||
@ -175,7 +172,7 @@ class Keg < Pathname
|
||||
optlink
|
||||
end
|
||||
|
||||
return $n + $d
|
||||
ObserverPathnameExtension.total
|
||||
rescue Exception
|
||||
opoo "Could not link #{fname}. Unlinking..."
|
||||
unlink
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user