search: return results while parsing
Instead of returning a full list of results after parsing, yield and print each result as it's found for a snappier user experience. Closes Homebrew/homebrew#9576. Signed-off-by: Misty De Meo <mistydemeo@gmail.com>
This commit is contained in:
parent
9a774ac0a6
commit
8d100a0508
@ -29,10 +29,8 @@ module Homebrew extend self
|
|||||||
end
|
end
|
||||||
|
|
||||||
if search_results.empty? and not blacklisted? query
|
if search_results.empty? and not blacklisted? query
|
||||||
pulls = GitHub.find_pull_requests rx
|
puts "No formula found for \"#{query}\". Searching open pull requests..."
|
||||||
unless pulls.empty?
|
GitHub.find_pull_requests(rx) { |pull| puts pull }
|
||||||
puts "Open pull requests matching \"#{query}\":", *pulls.map { |p| " #{p}" }
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -432,17 +432,15 @@ module GitHub extend self
|
|||||||
require 'open-uri'
|
require 'open-uri'
|
||||||
require 'vendor/multi_json'
|
require 'vendor/multi_json'
|
||||||
|
|
||||||
pulls = []
|
|
||||||
query = rx.source.delete '.*'
|
query = rx.source.delete '.*'
|
||||||
uri = URI.parse("http://github.com/api/v2/json/issues/search/mxcl/homebrew/open/#{query}")
|
uri = URI.parse("http://github.com/api/v2/json/issues/search/mxcl/homebrew/open/#{query}")
|
||||||
|
|
||||||
open uri do |f|
|
open uri do |f|
|
||||||
MultiJson.decode(f.read)["issues"].each do |pull|
|
MultiJson.decode(f.read)["issues"].each do |pull|
|
||||||
pulls << pull['pull_request_url'] if rx.match pull['title'] and pull["pull_request_url"]
|
yield pull['pull_request_url'] if rx.match pull['title'] and pull["pull_request_url"]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
pulls
|
|
||||||
rescue
|
rescue
|
||||||
[]
|
nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user