search: cache remote tap formulae
Closes Homebrew/homebrew#40775. Signed-off-by: Xu Cheng <xucheng@me.com>
This commit is contained in:
parent
7a59a3ee37
commit
6af47815b0
@ -108,11 +108,11 @@ module Homebrew
|
||||
return []
|
||||
end
|
||||
|
||||
results = []
|
||||
@@remote_tap_formulae ||= Hash.new do |cache, key|
|
||||
user, repo = key.split("/", 2)
|
||||
tree = {}
|
||||
|
||||
GitHub.open "https://api.github.com/repos/#{user}/homebrew-#{repo}/git/trees/HEAD?recursive=1" do |json|
|
||||
user = user.downcase if user == "Homebrew" # special handling for the Homebrew organization
|
||||
json["tree"].each do |object|
|
||||
next unless object["type"] == "blob"
|
||||
|
||||
@ -126,18 +126,18 @@ module Homebrew
|
||||
end
|
||||
|
||||
paths = tree["Formula"] || tree["HomebrewFormula"] || tree["Casks"] || tree["."] || []
|
||||
paths.each do |path|
|
||||
name = File.basename(path, ".rb")
|
||||
results << "#{user}/#{repo}/#{name}" if rx === name
|
||||
cache[key] = paths.map { |path| File.basename(path, ".rb") }
|
||||
end
|
||||
|
||||
names = @@remote_tap_formulae["#{user}/#{repo}"]
|
||||
user = user.downcase if user == "Homebrew" # special handling for the Homebrew organization
|
||||
names.select { |name| rx === name }.map { |name| "#{user}/#{repo}/#{name}" }
|
||||
rescue GitHub::HTTPNotFoundError => e
|
||||
opoo "Failed to search tap: #{user}/#{repo}. Please run `brew update`"
|
||||
[]
|
||||
rescue GitHub::Error => e
|
||||
SEARCH_ERROR_QUEUE << e
|
||||
[]
|
||||
else
|
||||
results
|
||||
end
|
||||
|
||||
def search_formulae rx
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user