lib/aurb/aur.rb in aurb-1.2.0 vs lib/aurb/aur.rb in aurb-1.2.1
- old
+ new
@@ -40,65 +40,54 @@
# download('aurb') # => ['http://.../aurb.tar.gz']
def download(*packages)
packages.map do |package|
Aurb.aur_download_path URI.escape(package.to_s)
end.select do |package|
- downloadable?(package)
+ !!(open package rescue false)
end.delete_if(&:blank?)
end
# Returns a +list+ of names of packages that have an upgrade
# available to them, which could then in turn be passed on to
# the +download+ method.
#
# # With Aurb on the AUR as version 1.1.2-1
- # upgrade(['aurb 0.0.0-0', 'aurb 0.9.9-9']) # => [:aurb]
- def upgrade(list)
+ # upgrade('aurb 0.0.0-0', 'aurb 0.9.9-9') # => [:aurb]
+ def upgrade(*list)
+ upgradables = []
list.inject([]) do |ary, line|
- name, version = line.split
- next if in_community?(name)
- ary << name.to_sym if upgradable?(name, version)
- ary
- end
+ ary << Thread.new do
+ name, version = line.split
+ next if Dir["/var/lib/pacman/sync/community/#{name}-#{version}"].any?
+ upgradables << name.to_sym if upgradable?(name, version)
+ end
+ end.each(&:join)
+ upgradables
end
protected
- # See if +package+ is available in the community repository.
- def in_community?(package)
- Dir["/var/lib/pacman/sync/community/#{package}-*"].any?
- end
-
- # Check if +package+ is available for download.
- def downloadable?(package)
- open package rescue false
- end
-
# Compare version of local +package+ with the one on the AUR.
def upgradable?(package, version)
local_version = Version.new(version)
remote_version = nil
-
- parse_json Aurb.aur_path(:info, package.to_s) do |json|
+ parse_json Aurb.aur_rpc_path(:info, package.to_s) do |json|
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)
- json = parse_json(Aurb.aur_path(:search, URI.escape(package.to_s)))
+ json = parse_json(Aurb.aur_rpc_path(:search, URI.escape(package.to_s)))
return [] if json.type =~ /error/
-
ids = json.results.map(&:ID)
ids.inject([]) do |ary, id|
- parse_json Aurb.aur_path(:info, id) do |json|
+ parse_json Aurb.aur_rpc_path(:info, id) do |json|
next if json.type =~ /error/
- result = json.results.symbolize_keys
- ary << result unless in_community?(result.Name)
+ ary << json.results.symbolize_keys
end
ary
end
end