Skip to content

Commit

Permalink
Merge pull request #16777 from reitermarkus/tap-sig-3
Browse files Browse the repository at this point in the history
Simplify `Tap#formula_files_by_name`.
  • Loading branch information
MikeMcQuaid committed Mar 1, 2024
2 parents 98f6ab2 + 2a78eba commit 0e1c1e3
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 12 deletions.
3 changes: 1 addition & 2 deletions Library/Homebrew/formulary.rb
Expand Up @@ -1201,7 +1201,6 @@ def self.find_formula_in_tap(name, tap)
"#{name}.rb"
end

Tap.formula_files_by_name(tap)
.fetch(name, tap.formula_dir/filename)
tap.formula_files_by_name.fetch(name, tap.formula_dir/filename)
end
end
14 changes: 4 additions & 10 deletions Library/Homebrew/tap.rb
Expand Up @@ -128,6 +128,7 @@ def clear_cache
@command_dir = nil
@formula_names = nil
@formula_files = nil
@formula_files_by_name = nil
@cask_files = nil
@cask_files_by_name = nil
@alias_dir = nil
Expand Down Expand Up @@ -561,19 +562,12 @@ def formula_files
end
end

# A cached hash of {Formula} basenames to {Formula} file pathnames for a {Tap}
sig { params(tap: Tap).returns(T::Hash[String, Pathname]) }
def self.formula_files_by_name(tap)
cache_key = "formula_files_by_name_#{tap}"
cache.fetch(cache_key) do |key|
cache[key] = tap.formula_files_by_name
end
end

# A mapping of {Formula} names to {Formula} file paths.
#
# @private
sig { returns(T::Hash[String, Pathname]) }
def formula_files_by_name
formula_files.each_with_object({}) do |file, hash|
@formula_files_by_name ||= formula_files.each_with_object({}) do |file, hash|
# If there's more than one file with the same basename: use the longer one to prioritise more specific results.
basename = file.basename(".rb").to_s
existing_file = hash[basename]
Expand Down

0 comments on commit 0e1c1e3

Please sign in to comment.