Make Tap::each respect the API.

This commit is contained in:
Markus Reiter 2024-02-20 15:10:26 +01:00
parent 3d3f0696b1
commit ab27efbd9d
No known key found for this signature in database
GPG Key ID: 245293B51702655B
7 changed files with 29 additions and 17 deletions

View File

@ -55,8 +55,10 @@ module Homebrew
args = tap_args.parse args = tap_args.parse
if args.repair? if args.repair?
Tap.each(&:link_completions_and_manpages) Tap.select(&:installed?).each do |tap|
Tap.each(&:fix_remote_configuration) tap.link_completions_and_manpages
tap.fix_remote_configuration
end
elsif args.no_named? elsif args.no_named?
puts Tap.names puts Tap.names
else else

View File

@ -146,7 +146,7 @@ module Homebrew
hub = ReporterHub.new hub = ReporterHub.new
updated_taps = [] updated_taps = []
Tap.each do |tap| Tap.select(&:installed?).each do |tap|
next if !tap.git? || tap.git_repo.origin_url.nil? next if !tap.git? || tap.git_repo.origin_url.nil?
next if (tap.core_tap? || tap.core_cask_tap?) && !Homebrew::EnvConfig.no_install_from_api? next if (tap.core_tap? || tap.core_cask_tap?) && !Homebrew::EnvConfig.no_install_from_api?
@ -254,7 +254,7 @@ module Homebrew
Commands.rebuild_commands_completion_list Commands.rebuild_commands_completion_list
link_completions_manpages_and_docs link_completions_manpages_and_docs
Tap.each(&:link_completions_and_manpages) Tap.select(&:installed?).each(&:link_completions_and_manpages)
failed_fetch_dirs = ENV["HOMEBREW_MISSING_REMOTE_REF_DIRS"]&.split("\n") failed_fetch_dirs = ENV["HOMEBREW_MISSING_REMOTE_REF_DIRS"]&.split("\n")
if failed_fetch_dirs.present? if failed_fetch_dirs.present?

View File

@ -72,7 +72,7 @@ module Homebrew
sig { void } sig { void }
def self.link! def self.link!
Settings.write :linkcompletions, true Settings.write :linkcompletions, true
Tap.each do |tap| Tap.select(&:installed?).each do |tap|
Utils::Link.link_completions tap.path, "brew completions link" Utils::Link.link_completions tap.path, "brew completions link"
end end
end end
@ -80,7 +80,7 @@ module Homebrew
sig { void } sig { void }
def self.unlink! def self.unlink!
Settings.write :linkcompletions, false Settings.write :linkcompletions, false
Tap.each do |tap| Tap.select(&:installed?).each do |tap|
next if tap.official? next if tap.official?
Utils::Link.unlink_completions tap.path Utils::Link.unlink_completions tap.path
@ -94,7 +94,7 @@ module Homebrew
sig { returns(T::Boolean) } sig { returns(T::Boolean) }
def self.completions_to_link? def self.completions_to_link?
Tap.each do |tap| Tap.select(&:installed?).each do |tap|
next if tap.official? next if tap.official?
SHELLS.each do |shell| SHELLS.each do |shell|

View File

@ -189,7 +189,7 @@ module Homebrew
# Run tap audits first # Run tap audits first
named_arg_taps = [*audit_formulae, *audit_casks].map(&:tap).uniq if !args.tap && !no_named_args named_arg_taps = [*audit_formulae, *audit_casks].map(&:tap).uniq if !args.tap && !no_named_args
tap_problems = Tap.each_with_object({}) do |tap, problems| tap_problems = Tap.select(&:installed?).each_with_object({}) do |tap, problems|
next if args.tap && tap != args.tap next if args.tap && tap != args.tap
next if named_arg_taps&.exclude?(tap) next if named_arg_taps&.exclude?(tap)

View File

@ -545,7 +545,7 @@ module Homebrew
return if ENV["CI"] return if ENV["CI"]
return unless Utils::Git.available? return unless Utils::Git.available?
commands = Tap.map do |tap| commands = Tap.select(&:installed?).map do |tap|
next if tap.git_repo.default_origin_branch? next if tap.git_repo.default_origin_branch?
"git -C $(brew --repo #{tap.name}) checkout #{tap.git_repo.origin_branch_name}" "git -C $(brew --repo #{tap.name}) checkout #{tap.git_repo.origin_branch_name}"
@ -795,7 +795,7 @@ module Homebrew
def check_for_tap_ruby_files_locations def check_for_tap_ruby_files_locations
bad_tap_files = {} bad_tap_files = {}
Tap.each do |tap| Tap.select(&:installed?).each do |tap|
unused_formula_dirs = tap.potential_formula_dirs - [tap.formula_dir] unused_formula_dirs = tap.potential_formula_dirs - [tap.formula_dir]
unused_formula_dirs.each do |dir| unused_formula_dirs.each do |dir|
next unless dir.exist? next unless dir.exist?

View File

@ -1025,7 +1025,7 @@ module Formulary
def self.tap_paths(name) def self.tap_paths(name)
name = name.to_s.downcase name = name.to_s.downcase
Tap.map do |tap| Tap.select(&:installed?).map do |tap|
formula_path = find_formula_in_tap(name, tap) formula_path = find_formula_in_tap(name, tap)
alias_path = tap.alias_dir/name alias_path = tap.alias_dir/name

View File

@ -842,15 +842,25 @@ class Tap
end end
def self.each(&block) def self.each(&block)
return unless TAP_DIRECTORY.directory?
return to_enum unless block return to_enum unless block
TAP_DIRECTORY.subdirs.each do |user| installed_taps = if TAP_DIRECTORY.directory?
user.subdirs.each do |repo| TAP_DIRECTORY.subdirs
yield fetch(user.basename.to_s, repo.basename.to_s) .flat_map(&:subdirs)
end .map(&method(:from_path))
else
[]
end end
available_taps = if Homebrew::EnvConfig.no_install_from_api?
installed_taps
else
default_taps = T.let([CoreTap.instance], T::Array[Tap])
default_taps << CoreCaskTap.instance if OS.mac? # rubocop:disable Homebrew/MoveToExtendOS
installed_taps + default_taps
end.sort_by(&:name).uniq
available_taps.each(&block)
end end
# An array of all installed {Tap} names. # An array of all installed {Tap} names.