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?
|
if ARGV.empty?
|
||||||
puts Tap.names
|
puts Tap.names
|
||||||
elsif ARGV.first == "--repair"
|
elsif ARGV.first == "--repair"
|
||||||
|
Tap.each(&:link_manpages)
|
||||||
migrate_taps :force => true
|
migrate_taps :force => true
|
||||||
elsif ARGV.first == "--list-official"
|
elsif ARGV.first == "--list-official"
|
||||||
require "official_taps"
|
require "official_taps"
|
||||||
|
@ -76,6 +76,7 @@ module Homebrew
|
|||||||
puts "Already up-to-date." unless master_updated || !updated_taps.empty?
|
puts "Already up-to-date." unless master_updated || !updated_taps.empty?
|
||||||
|
|
||||||
Tap.clear_cache
|
Tap.clear_cache
|
||||||
|
Tap.each(&:link_manpages)
|
||||||
|
|
||||||
# automatically tap any migrated formulae's new tap
|
# automatically tap any migrated formulae's new tap
|
||||||
report.select_formula(:D).each do |f|
|
report.select_formula(:D).each do |f|
|
||||||
|
@ -138,6 +138,8 @@ class Tap
|
|||||||
raise
|
raise
|
||||||
end
|
end
|
||||||
|
|
||||||
|
link_manpages
|
||||||
|
|
||||||
formula_count = formula_files.size
|
formula_count = formula_files.size
|
||||||
puts "Tapped #{formula_count} formula#{plural(formula_count, "e")} (#{path.abv})"
|
puts "Tapped #{formula_count} formula#{plural(formula_count, "e")} (#{path.abv})"
|
||||||
Descriptions.cache_formulae(formula_names)
|
Descriptions.cache_formulae(formula_names)
|
||||||
@ -153,6 +155,29 @@ class Tap
|
|||||||
end
|
end
|
||||||
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}.
|
# uninstall this {Tap}.
|
||||||
def uninstall
|
def uninstall
|
||||||
raise TapUnavailableError, name unless installed?
|
raise TapUnavailableError, name unless installed?
|
||||||
@ -161,11 +186,22 @@ class Tap
|
|||||||
unpin if pinned?
|
unpin if pinned?
|
||||||
formula_count = formula_files.size
|
formula_count = formula_files.size
|
||||||
Descriptions.uncache_formulae(formula_names)
|
Descriptions.uncache_formulae(formula_names)
|
||||||
|
unlink_manpages
|
||||||
path.rmtree
|
path.rmtree
|
||||||
path.dirname.rmdir_if_possible
|
path.parent.rmdir_if_possible
|
||||||
puts "Untapped #{formula_count} formula#{plural(formula_count, "e")}"
|
puts "Untapped #{formula_count} formula#{plural(formula_count, "e")}"
|
||||||
end
|
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.
|
# True if the {#remote} of {Tap} is customized.
|
||||||
def custom_remote?
|
def custom_remote?
|
||||||
return true unless remote
|
return true unless remote
|
||||||
@ -262,7 +298,7 @@ class Tap
|
|||||||
raise TapUnavailableError, name unless installed?
|
raise TapUnavailableError, name unless installed?
|
||||||
raise TapPinStatusError.new(name, false) unless pinned?
|
raise TapPinStatusError.new(name, false) unless pinned?
|
||||||
pinned_symlink_path.delete
|
pinned_symlink_path.delete
|
||||||
pinned_symlink_path.dirname.rmdir_if_possible
|
pinned_symlink_path.parent.rmdir_if_possible
|
||||||
@pinned = false
|
@pinned = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user