lib/aurb/aur.rb in aurb-1.2.3 vs lib/aurb/aur.rb in aurb-1.2.4

- old
+ new

@@ -27,13 +27,20 @@ # Search the AUR for given +packages+. # Returns an array of results. # # search('aurb') # => [{:ID => ..., :Name => 'aurb', ...}, {...}] def search(*packages) - packages.map do |package| - list_search_results(package) - end.flatten.delete_if(&:blank?) + results = [] + packages.inject([]) do |ary, package| + ary << Thread.new do + parse_json Aurb.aur_rpc_path(:search, URI.escape(package.to_s)) do |json| + next if json.type =~ /error/ + results << json.results + end + end + end.each(&:join) + results.flatten.delete_if(&:blank?) end # Download +packages+ from the AUR. # Returns an array of downloadable package urls. # @@ -74,22 +81,9 @@ return if json.type =~ /error/ remote_version = Version.new(json.results.Version) end remote_version && local_version < remote_version end - - # Returns an array containing a hash of search results - # for a given +package+. - def list_search_results(package) - results = [] - parse_json Aurb.aur_rpc_path(:search, URI.escape(package.to_s)) do |json| - next if json.type =~ /error/ - results << json.results - end - results - end - - private # Shortcut to the +Yajl+ JSON parser. def parse_json(json) json = Yajl::Parser.new.parse(open(json).read) yield json rescue json