mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Allow taps to link manpages.
A blocker for https://github.com/caskroom/homebrew-cask/pull/15381 being merged. Closes Homebrew/homebrew#46795.
This commit is contained in:
parent
ed35c18fcf
commit
d36d88edf2
@ -5,6 +5,7 @@ module Homebrew
|
||||
if ARGV.empty?
|
||||
puts Tap.names
|
||||
elsif ARGV.first == "--repair"
|
||||
Tap.each(&:link_manpages)
|
||||
migrate_taps :force => true
|
||||
elsif ARGV.first == "--list-official"
|
||||
require "official_taps"
|
||||
|
@ -76,6 +76,7 @@ module Homebrew
|
||||
puts "Already up-to-date." unless master_updated || !updated_taps.empty?
|
||||
|
||||
Tap.clear_cache
|
||||
Tap.each(&:link_manpages)
|
||||
|
||||
# automatically tap any migrated formulae's new tap
|
||||
report.select_formula(:D).each do |f|
|
||||
|
@ -138,6 +138,8 @@ class Tap
|
||||
raise
|
||||
end
|
||||
|
||||
link_manpages
|
||||
|
||||
formula_count = formula_files.size
|
||||
puts "Tapped #{formula_count} formula#{plural(formula_count, "e")} (#{path.abv})"
|
||||
Descriptions.cache_formulae(formula_names)
|
||||
@ -153,6 +155,29 @@ class Tap
|
||||
end
|
||||
end
|
||||
|
||||
def link_manpages
|
||||
return unless (path/"man").exist?
|
||||
conflicts = []
|
||||
(path/"man").find do |src|
|
||||
next if src.directory?
|
||||
dst = HOMEBREW_PREFIX/"share"/src.relative_path_from(path)
|
||||
next if dst.symlink? && src == dst.resolved_path
|
||||
if dst.exist?
|
||||
conflicts << dst
|
||||
next
|
||||
end
|
||||
dst.make_relative_symlink(src)
|
||||
end
|
||||
unless conflicts.empty?
|
||||
onoe <<-EOS.undent
|
||||
Could not link #{name} manpages to:
|
||||
#{conflicts.join("\n")}
|
||||
|
||||
Please delete these files and run `brew tap --repair`.
|
||||
EOS
|
||||
end
|
||||
end
|
||||
|
||||
# uninstall this {Tap}.
|
||||
def uninstall
|
||||
raise TapUnavailableError, name unless installed?
|
||||
@ -161,11 +186,22 @@ class Tap
|
||||
unpin if pinned?
|
||||
formula_count = formula_files.size
|
||||
Descriptions.uncache_formulae(formula_names)
|
||||
unlink_manpages
|
||||
path.rmtree
|
||||
path.dirname.rmdir_if_possible
|
||||
path.parent.rmdir_if_possible
|
||||
puts "Untapped #{formula_count} formula#{plural(formula_count, "e")}"
|
||||
end
|
||||
|
||||
def unlink_manpages
|
||||
return unless (path/"man").exist?
|
||||
(path/"man").find do |src|
|
||||
next if src.directory?
|
||||
dst = HOMEBREW_PREFIX/src.relative_path_from(path)
|
||||
dst.delete if dst.symlink? && src == dst.resolved_path
|
||||
dst.parent.rmdir_if_possible
|
||||
end
|
||||
end
|
||||
|
||||
# True if the {#remote} of {Tap} is customized.
|
||||
def custom_remote?
|
||||
return true unless remote
|
||||
@ -262,7 +298,7 @@ class Tap
|
||||
raise TapUnavailableError, name unless installed?
|
||||
raise TapPinStatusError.new(name, false) unless pinned?
|
||||
pinned_symlink_path.delete
|
||||
pinned_symlink_path.dirname.rmdir_if_possible
|
||||
pinned_symlink_path.parent.rmdir_if_possible
|
||||
@pinned = false
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user