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