aurb 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +2 -0
- data/bin/aurb +4 -5
- data/lib/aurb.rb +3 -49
- data/lib/aurb/base.rb +144 -0
- data/lib/aurb/core_ext.rb +0 -1
- data/lib/aurb/core_ext/hash.rb +2 -2
- data/lib/aurb/core_ext/string.rb +9 -6
- data/lib/aurb/{cli.rb → main.rb} +36 -21
- data/lib/aurb/version.rb +1 -1
- data/performance/aur.rb +3 -10
- data/test/test_helper.rb +1 -5
- data/test/unit/base_test.rb +96 -0
- data/test/unit/support_test.rb +7 -16
- metadata +44 -56
- data/.gitignore +0 -8
- data/Rakefile +0 -45
- data/VERSION +0 -1
- data/aurb.gemspec +0 -77
- data/lib/aurb/aur.rb +0 -105
- data/lib/aurb/core_ext/object.rb +0 -15
- data/test/unit/aur_test.rb +0 -81
data/README.md
CHANGED
data/bin/aurb
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
# encoding: utf-8
|
|
3
3
|
|
|
4
|
-
require File.expand_path(
|
|
4
|
+
require File.expand_path('../../lib/aurb/main', __FILE__)
|
|
5
5
|
|
|
6
6
|
begin
|
|
7
|
-
Aurb::
|
|
8
|
-
rescue Aurb::
|
|
9
|
-
|
|
10
|
-
exit e.status_code
|
|
7
|
+
Aurb::Main.start
|
|
8
|
+
rescue Aurb::Error => e
|
|
9
|
+
abort e.message.colorize(:red)
|
|
11
10
|
end
|
data/lib/aurb.rb
CHANGED
|
@@ -1,59 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
# encoding: utf-8
|
|
3
3
|
|
|
4
|
-
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__))
|
|
5
|
-
|
|
6
|
-
require 'logger'
|
|
7
4
|
require 'open-uri'
|
|
8
|
-
|
|
9
5
|
require 'zlib'
|
|
10
6
|
require 'yajl'
|
|
11
|
-
require 'ansi'
|
|
12
7
|
require 'archive/tar/minitar'
|
|
13
8
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class AurbError < StandardError
|
|
18
|
-
def self.status_code(code = nil)
|
|
19
|
-
return @code unless code
|
|
20
|
-
@code = code
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def status_code
|
|
24
|
-
self.class.status_code
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
class NoResultsError < AurbError
|
|
29
|
-
status_code 7
|
|
30
|
-
|
|
31
|
-
def initialize
|
|
32
|
-
super('No results found')
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
class DownloadError < AurbError
|
|
37
|
-
status_code 10
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
class << self
|
|
41
|
-
def logger
|
|
42
|
-
@logger ||= Logger.new(STDOUT)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def aur_rpc_path(type, arg)
|
|
46
|
-
"http://aur.archlinux.org/rpc.php?type=#{type}&arg=#{arg}"
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def aur_download_path(pkg)
|
|
50
|
-
"http://aur.archlinux.org/packages/#{pkg}/#{pkg}.tar.gz"
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def aur
|
|
54
|
-
@aur ||= Aur.new
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
9
|
+
libdir = File.dirname(__FILE__)
|
|
10
|
+
$LOAD_PATH.unshift libdir unless $LOAD_PATH.include?(libdir)
|
|
58
11
|
|
|
12
|
+
require 'aurb/base'
|
|
59
13
|
require 'aurb/core_ext'
|
data/lib/aurb/base.rb
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
4
|
+
module Aurb
|
|
5
|
+
# Generic Aurb error class.
|
|
6
|
+
class Error < StandardError; end
|
|
7
|
+
|
|
8
|
+
# Raised when a download location wasn't found.
|
|
9
|
+
class DownloadError < Error; end
|
|
10
|
+
|
|
11
|
+
# Raised when a search returns no results.
|
|
12
|
+
class NoResultsError < Error
|
|
13
|
+
def initialize
|
|
14
|
+
super('No results found')
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# The path to save downloaded packages to.
|
|
19
|
+
SavePath = '~/abs'
|
|
20
|
+
|
|
21
|
+
# The URL to retrieve package info from.
|
|
22
|
+
SearchPath = lambda {|t, a| "http://aur.archlinux.org/rpc.php?type=#{t}&arg=#{a}"}
|
|
23
|
+
|
|
24
|
+
# The URL to retrieve packages from.
|
|
25
|
+
DownloadPath = lambda {|p| "http://aur.archlinux.org/packages/#{p}/#{p}.tar.gz"}
|
|
26
|
+
|
|
27
|
+
# Main Aurb class, interacting with the AUR.
|
|
28
|
+
module Base
|
|
29
|
+
extend self
|
|
30
|
+
|
|
31
|
+
# Compare package versions.
|
|
32
|
+
#
|
|
33
|
+
# Version.new('1.0.0') < Version.new('2.0.0') # => true
|
|
34
|
+
# Version.new('1.1-1') < Version.new('1.0-6') # => false
|
|
35
|
+
class Version
|
|
36
|
+
include Comparable
|
|
37
|
+
|
|
38
|
+
attr_reader :version
|
|
39
|
+
|
|
40
|
+
def initialize(*args)
|
|
41
|
+
@version = args.join('.').split(/\W+/).map &:to_i
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def <=>(other)
|
|
45
|
+
[self.version.size, other.version.size].max.times do |i|
|
|
46
|
+
c = self.version[i] <=> other.version[i]
|
|
47
|
+
return c if c != 0
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Search the AUR for given +packages+.
|
|
53
|
+
# Returns an array of results.
|
|
54
|
+
#
|
|
55
|
+
# search('aurb') # => [{:ID => ..., :Name => 'aurb', ...}, {...}]
|
|
56
|
+
def search(*packages)
|
|
57
|
+
[].tap { |results|
|
|
58
|
+
packages.map {|p| URI.escape(p.to_s)}.inject([]) { |ary, package|
|
|
59
|
+
ary << Thread.new do
|
|
60
|
+
parse_json Aurb::SearchPath[:search, package] do |json|
|
|
61
|
+
next if json.type =~ /error/
|
|
62
|
+
results << json.results
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
}.each &:join
|
|
66
|
+
}.flatten.compact
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Download +packages+ from the AUR.
|
|
70
|
+
# Returns an array of downloadable package urls.
|
|
71
|
+
#
|
|
72
|
+
# download('aurb') # => ['http://.../aurb.tar.gz']
|
|
73
|
+
def download(*packages)
|
|
74
|
+
packages.map { |package|
|
|
75
|
+
Aurb::DownloadPath[URI.escape(package.to_s)]
|
|
76
|
+
}.select { |package|
|
|
77
|
+
!!(open package rescue false)
|
|
78
|
+
}.compact
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Returns all available info for a given package name.
|
|
82
|
+
#
|
|
83
|
+
# info('aurb') # => {:ID => ..., :Name => 'aurb', ...}
|
|
84
|
+
def info(package)
|
|
85
|
+
parse_json Aurb::SearchPath[:info, URI.escape(package.to_s)] do |json|
|
|
86
|
+
return if json.type =~ /error/
|
|
87
|
+
json.results
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# Returns a +list+ of names of packages that have an upgrade
|
|
92
|
+
# available to them, which could then in turn be passed on to
|
|
93
|
+
# the +download+ method.
|
|
94
|
+
#
|
|
95
|
+
# # With Aurb on the AUR as version 1.1.2-1
|
|
96
|
+
# upgrade('aurb 0.0.0-0', 'aurb 9.9.9-9') # => [:aurb]
|
|
97
|
+
def upgrade(*list)
|
|
98
|
+
[].tap { |upgradables|
|
|
99
|
+
list.inject([]) { |ary, line|
|
|
100
|
+
ary << Thread.new do
|
|
101
|
+
name, version = line.split
|
|
102
|
+
|
|
103
|
+
next if Dir["/var/lib/pacman/sync/community/#{name}-#{version}"].any?
|
|
104
|
+
upgradables << name.to_sym if upgradable?(name, version)
|
|
105
|
+
end
|
|
106
|
+
}.each &:join
|
|
107
|
+
}.compact
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
protected
|
|
111
|
+
|
|
112
|
+
# Shortcut to the +Yajl+ JSON parser.
|
|
113
|
+
def parse_json(json)
|
|
114
|
+
json = Yajl::Parser.new.parse(open(json).read)
|
|
115
|
+
block_given? ? yield(json) : json
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
private
|
|
119
|
+
|
|
120
|
+
# Compare version of local +package+ with the one on the AUR.
|
|
121
|
+
def upgradable?(package, version)
|
|
122
|
+
package = URI.escape(package.to_s)
|
|
123
|
+
local_version = Version.new(version)
|
|
124
|
+
remote_version = nil
|
|
125
|
+
|
|
126
|
+
parse_json Aurb::SearchPath[:info, package] do |json|
|
|
127
|
+
return if json.type =~ /error/
|
|
128
|
+
remote_version = Version.new(json.results.Version)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
remote_version and local_version < remote_version
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
# Check if +Base+ responds to this unknown method and delegate the method to
|
|
136
|
+
# +Base+ if so.
|
|
137
|
+
def self.method_missing(method, args, &block)
|
|
138
|
+
if Base.respond_to?(method)
|
|
139
|
+
Base.send method, *args, &block
|
|
140
|
+
else
|
|
141
|
+
super
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
data/lib/aurb/core_ext.rb
CHANGED
data/lib/aurb/core_ext/hash.rb
CHANGED
|
@@ -14,12 +14,12 @@ module Aurb
|
|
|
14
14
|
|
|
15
15
|
# Destructively converts all keys to symbols.
|
|
16
16
|
def symbolize_keys!
|
|
17
|
-
|
|
17
|
+
replace symbolize_keys
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
# Delegation
|
|
21
21
|
def method_missing(key)
|
|
22
|
-
|
|
22
|
+
symbolize_keys[key.to_sym]
|
|
23
23
|
end
|
|
24
24
|
end
|
|
25
25
|
end
|
data/lib/aurb/core_ext/string.rb
CHANGED
|
@@ -4,15 +4,18 @@
|
|
|
4
4
|
module Aurb
|
|
5
5
|
module CoreExt
|
|
6
6
|
module String
|
|
7
|
+
# Available colors for <tt>String#colorize</tt>.
|
|
8
|
+
COLORS = [:gray, :red, :green, :yellow, :blue, :purple, :cyan, :white]
|
|
9
|
+
|
|
7
10
|
# Colors a string with +color+.
|
|
8
|
-
# Uses the ANSICode library provided by +facets+.
|
|
9
|
-
#
|
|
10
|
-
# "Hello".colorize(:blue) # => "\e[34mHello\e[0m"
|
|
11
11
|
#
|
|
12
|
-
#
|
|
13
|
-
# http://facets.rubyforge.org/apidoc/api/more/classes/ANSICode.html
|
|
12
|
+
# "Hello".colorize(:blue)
|
|
14
13
|
def colorize(effect)
|
|
15
|
-
|
|
14
|
+
if STDOUT.tty? && ENV['TERM']
|
|
15
|
+
"\033[0;#{30+COLORS.index(effect.to_sym)}m#{self}\033[0m"
|
|
16
|
+
else
|
|
17
|
+
self
|
|
18
|
+
end
|
|
16
19
|
rescue
|
|
17
20
|
self
|
|
18
21
|
end
|
data/lib/aurb/{cli.rb → main.rb}
RENAMED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
# encoding: utf-8
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
require 'rubygems' if RUBY_DESCRIPTION =~ /(rubinius|jruby)/i
|
|
5
5
|
require 'thor'
|
|
6
|
-
require 'aurb'
|
|
6
|
+
require File.expand_path('../../aurb', __FILE__)
|
|
7
7
|
|
|
8
8
|
module Aurb
|
|
9
|
-
class
|
|
9
|
+
class Main < Thor
|
|
10
10
|
ARGV = ::ARGV.dup
|
|
11
11
|
|
|
12
12
|
map %w[-d --download] => :download,
|
|
@@ -17,64 +17,79 @@ module Aurb
|
|
|
17
17
|
desc 'download PACKAGES', 'Download packages'
|
|
18
18
|
method_option :path,
|
|
19
19
|
:type => :string,
|
|
20
|
-
:default =>
|
|
20
|
+
:default => Aurb::SavePath,
|
|
21
21
|
:banner => 'Specify the path to download to'
|
|
22
22
|
method_option :keep,
|
|
23
23
|
:type => :boolean,
|
|
24
24
|
:banner => 'Keep the tarball after downloading'
|
|
25
25
|
def download(*pkgs)
|
|
26
|
-
pkgs = Aurb.
|
|
27
|
-
raise Aurb::NoResultsError if pkgs.
|
|
28
|
-
|
|
26
|
+
pkgs = Aurb.download(*pkgs)
|
|
27
|
+
raise Aurb::NoResultsError if pkgs.empty?
|
|
28
|
+
|
|
29
|
+
path = if options.path.start_with?('/')
|
|
30
|
+
options.path
|
|
31
|
+
else
|
|
32
|
+
File.join(Dir.pwd, options.path)
|
|
33
|
+
end
|
|
34
|
+
|
|
29
35
|
if File.exist?(path)
|
|
30
36
|
path = File.expand_path(path)
|
|
31
37
|
else
|
|
32
38
|
raise Aurb::DownloadError, "'#{path}' is not a valid path"
|
|
33
39
|
end
|
|
40
|
+
|
|
34
41
|
pkgs.each_with_index do |package, index|
|
|
35
42
|
local = package.split('/')[-1]
|
|
43
|
+
|
|
36
44
|
Dir.chdir path do
|
|
37
45
|
open package do |remote|
|
|
38
46
|
File.open local, 'wb' do |local|
|
|
39
47
|
local.write remote.read
|
|
40
48
|
end
|
|
41
49
|
end
|
|
42
|
-
|
|
50
|
+
|
|
51
|
+
Archive::Tar::Minitar.
|
|
52
|
+
unpack Zlib::GzipReader.new(File.open(local, 'rb')), Dir.pwd
|
|
43
53
|
File.delete local unless options.keep?
|
|
44
54
|
end
|
|
55
|
+
|
|
45
56
|
puts "(#{index+1}/#{pkgs.size}) downloaded #{local}"
|
|
46
57
|
end
|
|
47
58
|
end
|
|
48
59
|
|
|
49
60
|
desc 'search PACKAGES', 'Search for packages'
|
|
50
61
|
def search(*pkgs)
|
|
51
|
-
pkgs = Aurb.
|
|
52
|
-
raise Aurb::NoResultsError if pkgs.
|
|
62
|
+
pkgs = Aurb.search(*pkgs)
|
|
63
|
+
raise Aurb::NoResultsError if pkgs.empty?
|
|
64
|
+
|
|
53
65
|
pkgs.each do |package|
|
|
54
66
|
status = package.OutOfDate == '1' ? '✘'.colorize(:red) : '✔'.colorize(:green)
|
|
55
|
-
name, version, description =
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
67
|
+
name, version, description, votes =
|
|
68
|
+
package.Name.colorize(:yellow), package.Version, package.Description,
|
|
69
|
+
package.NumVotes.colorize(:blue)
|
|
70
|
+
|
|
71
|
+
puts "[#{status}] #{name} #{version} (#{votes})\n #{description}"
|
|
59
72
|
end
|
|
60
73
|
end
|
|
61
74
|
|
|
62
75
|
desc 'info PACKAGE', 'List all available information for a given package'
|
|
63
76
|
def info(pkg)
|
|
64
|
-
info = Aurb.
|
|
65
|
-
raise Aurb::NoResultsError if info.
|
|
77
|
+
info = Aurb.info(pkg)
|
|
78
|
+
raise Aurb::NoResultsError if info.empty?
|
|
79
|
+
|
|
66
80
|
info.each do |key, value|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
81
|
+
(key.size..10).each { print ' ' }
|
|
82
|
+
print key.colorize(:yellow) + ' '
|
|
83
|
+
puts value
|
|
70
84
|
end
|
|
71
85
|
end
|
|
72
86
|
|
|
73
87
|
desc 'upgrade', 'Search for upgrades to installed packages'
|
|
74
88
|
def upgrade
|
|
75
89
|
list = `pacman -Qm`.split(/\n/)
|
|
76
|
-
pkgs = Aurb.
|
|
77
|
-
raise Aurb::NoResultsError if pkgs.
|
|
90
|
+
pkgs = Aurb.upgrade(*list)
|
|
91
|
+
raise Aurb::NoResultsError if pkgs.empty?
|
|
92
|
+
|
|
78
93
|
pkgs.each do |package|
|
|
79
94
|
puts "#{package.to_s.colorize(:yellow)} has an upgrade available"
|
|
80
95
|
end
|
data/lib/aurb/version.rb
CHANGED
data/performance/aur.rb
CHANGED
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'rubygems' if RUBY_DESCRIPTION =~ /rubinius/i
|
|
2
2
|
require 'benchmark'
|
|
3
|
-
|
|
4
|
-
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
|
|
5
|
-
|
|
6
|
-
require 'aurb'
|
|
3
|
+
require File.expand_path('../../lib/aurb', __FILE__)
|
|
7
4
|
|
|
8
5
|
Benchmark.bm 20 do |x|
|
|
9
|
-
x.report 'aurb upgrade' do
|
|
10
|
-
Aurb.aur.upgrade *`pacman -Qm`.split(/\n/)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
6
|
x.report 'aurb search' do
|
|
14
|
-
Aurb.aur.search
|
|
7
|
+
Aurb.aur.search :quake
|
|
15
8
|
end
|
|
16
9
|
|
|
17
10
|
x.report 'slurpy search' do
|
data/test/test_helper.rb
CHANGED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
|
+
|
|
3
|
+
class BaseTest < Test::Unit::TestCase
|
|
4
|
+
context 'Aurb::Base' do
|
|
5
|
+
context 'Version' do
|
|
6
|
+
should 'be able to compare versions and return the newest' do
|
|
7
|
+
versions = [
|
|
8
|
+
{:old => '1', :new => '2' },
|
|
9
|
+
{:old => '1-3', :new => '2-1' },
|
|
10
|
+
{:old => '1.0.0-2', :new => '2.0.0-3'},
|
|
11
|
+
{:old => '1.0.pre', :new => '1.0.1' }
|
|
12
|
+
]
|
|
13
|
+
versions.each do |version|
|
|
14
|
+
assert_operator Aurb::Base::Version.new(version[:old]), :<, Aurb::Base::Version.new(version[:new])
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context 'Aurb::Base' do
|
|
21
|
+
context 'info' do
|
|
22
|
+
setup do
|
|
23
|
+
@package_working = 'aurb'
|
|
24
|
+
@package_faulty = 'foobarbaz'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
should 'return a hash of results' do
|
|
28
|
+
assert_operator Hash, :===, Aurb::Base.info(@package_working)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
should 'return nothing when a package does not exist' do
|
|
32
|
+
assert Aurb::Base.info(@package_faulty).nil?
|
|
33
|
+
assert_nil Aurb::Base.info(@package_faulty)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'upgrade' do
|
|
38
|
+
setup do
|
|
39
|
+
@list = "aurb 0.0.0-0\naurb 9.9.9-9".split(/\n/)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
should 'return an array' do
|
|
43
|
+
assert_operator Array, :===, Aurb::Base.upgrade(*@list)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
should 'contain only upgradable packages' do
|
|
47
|
+
assert_not_equal [:aurb, :aurb], Aurb::Base.upgrade(*@list)
|
|
48
|
+
assert_equal [:aurb], Aurb::Base.upgrade(*@list)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context 'download' do
|
|
53
|
+
setup do
|
|
54
|
+
@package_working = 'aurb'
|
|
55
|
+
@package_faulty = 'foobarbaz'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
should 'return an array' do
|
|
59
|
+
assert_operator Array, :===, Aurb::Base.download(*@package_working)
|
|
60
|
+
assert_operator Array, :===, Aurb::Base.download(*@package_faulty)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
should 'return download links' do
|
|
64
|
+
assert_equal [Aurb::DownloadPath[*@package_working]], Aurb::Base.download(*@package_working)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
should 'filter out non-existant packages' do
|
|
68
|
+
assert Aurb::Base.download(*@package_faulty).empty?
|
|
69
|
+
assert_equal [], Aurb::Base.download(*@package_faulty)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
context 'search' do
|
|
74
|
+
setup do
|
|
75
|
+
@package_working = 'aurb'
|
|
76
|
+
@package_faulty = 'foobarbaz'
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
should 'return an array of results' do
|
|
80
|
+
assert_operator Array, :===, Aurb::Base.search(*@package_working)
|
|
81
|
+
assert_operator Array, :===, Aurb::Base.search(*@package_faulty)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
should 'filter out non-existant packages' do
|
|
85
|
+
assert Aurb::Base.search(*@package_faulty).empty?
|
|
86
|
+
assert_equal [], Aurb::Base.search(*@package_faulty)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
context 'result' do
|
|
90
|
+
should 'return an array containing hashes' do
|
|
91
|
+
assert_operator Hash, :===, Aurb::Base.search(*@package_working).first
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
data/test/unit/support_test.rb
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
require File.expand_path(
|
|
1
|
+
require File.expand_path('../../test_helper', __FILE__)
|
|
2
2
|
|
|
3
3
|
class SupportTest < Test::Unit::TestCase
|
|
4
|
-
context 'Object' do
|
|
5
|
-
should 'be able to check for blank' do
|
|
6
|
-
assert ''.blank?
|
|
7
|
-
assert nil.blank?
|
|
8
|
-
assert [].blank?
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
4
|
context 'Hash' do
|
|
13
5
|
setup do
|
|
14
6
|
@hash_str = {'hello' => 'world'}
|
|
@@ -28,13 +20,12 @@ class SupportTest < Test::Unit::TestCase
|
|
|
28
20
|
end
|
|
29
21
|
|
|
30
22
|
context 'String' do
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
assert_equal "\e[34mfoo\e[0m", @str.colorize(:blue)
|
|
23
|
+
should 'be able to colorize itself' do
|
|
24
|
+
str = 'foo'
|
|
25
|
+
String::COLORS.each_with_index do |color, i|
|
|
26
|
+
assert str.colorize(color)
|
|
27
|
+
assert_equal "\e[0;#{30+i}m#{str}\e[0m", str.colorize(color)
|
|
28
|
+
end
|
|
38
29
|
end
|
|
39
30
|
end
|
|
40
31
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: aurb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
4
|
+
prerelease:
|
|
5
|
+
version: 1.4.0
|
|
5
6
|
platform: ruby
|
|
6
7
|
authors:
|
|
7
8
|
- Gigamo
|
|
@@ -9,117 +10,104 @@ autorequire:
|
|
|
9
10
|
bindir: bin
|
|
10
11
|
cert_chain: []
|
|
11
12
|
|
|
12
|
-
date:
|
|
13
|
+
date: 2011-09-21 00:00:00 +02:00
|
|
13
14
|
default_executable: aurb
|
|
14
15
|
dependencies:
|
|
15
16
|
- !ruby/object:Gem::Dependency
|
|
16
17
|
name: yajl-ruby
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
prerelease: false
|
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
|
20
|
+
none: false
|
|
20
21
|
requirements:
|
|
21
22
|
- - ">="
|
|
22
23
|
- !ruby/object:Gem::Version
|
|
23
24
|
version: "0"
|
|
24
|
-
|
|
25
|
+
type: :runtime
|
|
26
|
+
version_requirements: *id001
|
|
25
27
|
- !ruby/object:Gem::Dependency
|
|
26
28
|
name: thor
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
prerelease: false
|
|
30
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
|
31
|
+
none: false
|
|
30
32
|
requirements:
|
|
31
33
|
- - ">="
|
|
32
34
|
- !ruby/object:Gem::Version
|
|
33
35
|
version: "0"
|
|
34
|
-
version:
|
|
35
|
-
- !ruby/object:Gem::Dependency
|
|
36
|
-
name: ansi
|
|
37
36
|
type: :runtime
|
|
38
|
-
|
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
40
|
-
requirements:
|
|
41
|
-
- - ">="
|
|
42
|
-
- !ruby/object:Gem::Version
|
|
43
|
-
version: "0"
|
|
44
|
-
version:
|
|
37
|
+
version_requirements: *id002
|
|
45
38
|
- !ruby/object:Gem::Dependency
|
|
46
39
|
name: archive-tar-minitar
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
prerelease: false
|
|
41
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
|
42
|
+
none: false
|
|
50
43
|
requirements:
|
|
51
44
|
- - ">="
|
|
52
45
|
- !ruby/object:Gem::Version
|
|
53
46
|
version: "0"
|
|
54
|
-
|
|
47
|
+
type: :runtime
|
|
48
|
+
version_requirements: *id003
|
|
55
49
|
- !ruby/object:Gem::Dependency
|
|
56
50
|
name: shoulda
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
prerelease: false
|
|
52
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
53
|
+
none: false
|
|
60
54
|
requirements:
|
|
61
55
|
- - ">="
|
|
62
56
|
- !ruby/object:Gem::Version
|
|
63
57
|
version: "0"
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
58
|
+
type: :development
|
|
59
|
+
version_requirements: *id004
|
|
60
|
+
description: An AUR (Arch User Repository) utility
|
|
61
|
+
email:
|
|
62
|
+
- gigamo@gmail.com
|
|
67
63
|
executables:
|
|
68
64
|
- aurb
|
|
69
65
|
extensions: []
|
|
70
66
|
|
|
71
|
-
extra_rdoc_files:
|
|
72
|
-
|
|
73
|
-
- README.md
|
|
67
|
+
extra_rdoc_files: []
|
|
68
|
+
|
|
74
69
|
files:
|
|
75
|
-
- .gitignore
|
|
76
|
-
- LICENSE
|
|
77
|
-
- README.md
|
|
78
|
-
- Rakefile
|
|
79
|
-
- VERSION
|
|
80
|
-
- aurb.gemspec
|
|
81
70
|
- bin/aurb
|
|
82
|
-
- lib/aurb.rb
|
|
83
|
-
- lib/aurb/aur.rb
|
|
84
|
-
- lib/aurb/cli.rb
|
|
85
|
-
- lib/aurb/core_ext.rb
|
|
71
|
+
- lib/aurb/base.rb
|
|
86
72
|
- lib/aurb/core_ext/hash.rb
|
|
87
|
-
- lib/aurb/core_ext/object.rb
|
|
88
73
|
- lib/aurb/core_ext/string.rb
|
|
74
|
+
- lib/aurb/core_ext.rb
|
|
75
|
+
- lib/aurb/main.rb
|
|
89
76
|
- lib/aurb/version.rb
|
|
90
|
-
-
|
|
77
|
+
- lib/aurb.rb
|
|
91
78
|
- test/test_helper.rb
|
|
92
|
-
- test/unit/
|
|
79
|
+
- test/unit/base_test.rb
|
|
93
80
|
- test/unit/support_test.rb
|
|
81
|
+
- performance/aur.rb
|
|
82
|
+
- LICENSE
|
|
83
|
+
- README.md
|
|
94
84
|
has_rdoc: true
|
|
95
85
|
homepage: http://github.com/gigamo/aurb
|
|
96
86
|
licenses: []
|
|
97
87
|
|
|
98
88
|
post_install_message:
|
|
99
|
-
rdoc_options:
|
|
100
|
-
|
|
89
|
+
rdoc_options: []
|
|
90
|
+
|
|
101
91
|
require_paths:
|
|
102
92
|
- lib
|
|
103
93
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
94
|
+
none: false
|
|
104
95
|
requirements:
|
|
105
96
|
- - ">="
|
|
106
97
|
- !ruby/object:Gem::Version
|
|
107
98
|
version: "0"
|
|
108
|
-
version:
|
|
109
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
|
+
none: false
|
|
110
101
|
requirements:
|
|
111
102
|
- - ">="
|
|
112
103
|
- !ruby/object:Gem::Version
|
|
113
|
-
version:
|
|
114
|
-
version:
|
|
104
|
+
version: 1.3.6
|
|
115
105
|
requirements: []
|
|
116
106
|
|
|
117
|
-
rubyforge_project:
|
|
118
|
-
rubygems_version: 1.
|
|
107
|
+
rubyforge_project: aurb
|
|
108
|
+
rubygems_version: 1.5.0
|
|
119
109
|
signing_key:
|
|
120
110
|
specification_version: 3
|
|
121
111
|
summary: An AUR (Arch User Repository) utility
|
|
122
|
-
test_files:
|
|
123
|
-
|
|
124
|
-
- test/unit/support_test.rb
|
|
125
|
-
- test/test_helper.rb
|
|
112
|
+
test_files: []
|
|
113
|
+
|
data/.gitignore
DELETED
data/Rakefile
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
require 'rake'
|
|
2
|
-
require 'jeweler'
|
|
3
|
-
require 'yard'
|
|
4
|
-
require 'yard/rake/yardoc_task'
|
|
5
|
-
|
|
6
|
-
Jeweler::Tasks.new do |gem|
|
|
7
|
-
gem.name = 'aurb'
|
|
8
|
-
gem.summary = %Q{An AUR (Arch User Repository) utility}
|
|
9
|
-
gem.email = 'gigamo@gmail.com'
|
|
10
|
-
gem.homepage = 'http://github.com/gigamo/aurb'
|
|
11
|
-
gem.authors = ['Gigamo']
|
|
12
|
-
|
|
13
|
-
gem.add_dependency('yajl-ruby')
|
|
14
|
-
gem.add_dependency('thor')
|
|
15
|
-
gem.add_dependency('ansi')
|
|
16
|
-
gem.add_dependency('archive-tar-minitar')
|
|
17
|
-
|
|
18
|
-
gem.add_development_dependency('shoulda')
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
Jeweler::GemcutterTasks.new
|
|
22
|
-
|
|
23
|
-
require 'rake/testtask'
|
|
24
|
-
Rake::TestTask.new(:test) do |test|
|
|
25
|
-
test.libs << 'test'
|
|
26
|
-
test.ruby_opts << '-rubygems'
|
|
27
|
-
test.pattern = 'test/**/*_test.rb'
|
|
28
|
-
test.verbose = true
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
namespace :test do
|
|
32
|
-
Rake::TestTask.new(:units) do |test|
|
|
33
|
-
test.libs << 'test'
|
|
34
|
-
test.ruby_opts << '-rubygems'
|
|
35
|
-
test.pattern = 'test/unit/**/*_test.rb'
|
|
36
|
-
test.verbose = true
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
task :default => :test
|
|
41
|
-
task :test => :check_dependencies
|
|
42
|
-
|
|
43
|
-
YARD::Rake::YardocTask.new(:doc) do |t|
|
|
44
|
-
t.options = ['--legacy'] if RUBY_VERSION < '1.9.0'
|
|
45
|
-
end
|
data/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.3.0
|
data/aurb.gemspec
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Generated by jeweler
|
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
|
4
|
-
# -*- encoding: utf-8 -*-
|
|
5
|
-
|
|
6
|
-
Gem::Specification.new do |s|
|
|
7
|
-
s.name = %q{aurb}
|
|
8
|
-
s.version = "1.3.0"
|
|
9
|
-
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
|
-
s.authors = ["Gigamo"]
|
|
12
|
-
s.date = %q{2010-03-07}
|
|
13
|
-
s.default_executable = %q{aurb}
|
|
14
|
-
s.email = %q{gigamo@gmail.com}
|
|
15
|
-
s.executables = ["aurb"]
|
|
16
|
-
s.extra_rdoc_files = [
|
|
17
|
-
"LICENSE",
|
|
18
|
-
"README.md"
|
|
19
|
-
]
|
|
20
|
-
s.files = [
|
|
21
|
-
".gitignore",
|
|
22
|
-
"LICENSE",
|
|
23
|
-
"README.md",
|
|
24
|
-
"Rakefile",
|
|
25
|
-
"VERSION",
|
|
26
|
-
"aurb.gemspec",
|
|
27
|
-
"bin/aurb",
|
|
28
|
-
"lib/aurb.rb",
|
|
29
|
-
"lib/aurb/aur.rb",
|
|
30
|
-
"lib/aurb/cli.rb",
|
|
31
|
-
"lib/aurb/core_ext.rb",
|
|
32
|
-
"lib/aurb/core_ext/hash.rb",
|
|
33
|
-
"lib/aurb/core_ext/object.rb",
|
|
34
|
-
"lib/aurb/core_ext/string.rb",
|
|
35
|
-
"lib/aurb/version.rb",
|
|
36
|
-
"performance/aur.rb",
|
|
37
|
-
"test/test_helper.rb",
|
|
38
|
-
"test/unit/aur_test.rb",
|
|
39
|
-
"test/unit/support_test.rb"
|
|
40
|
-
]
|
|
41
|
-
s.homepage = %q{http://github.com/gigamo/aurb}
|
|
42
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
|
43
|
-
s.require_paths = ["lib"]
|
|
44
|
-
s.rubygems_version = %q{1.3.5}
|
|
45
|
-
s.summary = %q{An AUR (Arch User Repository) utility}
|
|
46
|
-
s.test_files = [
|
|
47
|
-
"test/unit/aur_test.rb",
|
|
48
|
-
"test/unit/support_test.rb",
|
|
49
|
-
"test/test_helper.rb"
|
|
50
|
-
]
|
|
51
|
-
|
|
52
|
-
if s.respond_to? :specification_version then
|
|
53
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
54
|
-
s.specification_version = 3
|
|
55
|
-
|
|
56
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
57
|
-
s.add_runtime_dependency(%q<yajl-ruby>, [">= 0"])
|
|
58
|
-
s.add_runtime_dependency(%q<thor>, [">= 0"])
|
|
59
|
-
s.add_runtime_dependency(%q<ansi>, [">= 0"])
|
|
60
|
-
s.add_runtime_dependency(%q<archive-tar-minitar>, [">= 0"])
|
|
61
|
-
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
|
62
|
-
else
|
|
63
|
-
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
|
64
|
-
s.add_dependency(%q<thor>, [">= 0"])
|
|
65
|
-
s.add_dependency(%q<ansi>, [">= 0"])
|
|
66
|
-
s.add_dependency(%q<archive-tar-minitar>, [">= 0"])
|
|
67
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
68
|
-
end
|
|
69
|
-
else
|
|
70
|
-
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
|
71
|
-
s.add_dependency(%q<thor>, [">= 0"])
|
|
72
|
-
s.add_dependency(%q<ansi>, [">= 0"])
|
|
73
|
-
s.add_dependency(%q<archive-tar-minitar>, [">= 0"])
|
|
74
|
-
s.add_dependency(%q<shoulda>, [">= 0"])
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
data/lib/aurb/aur.rb
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# encoding: utf-8
|
|
3
|
-
|
|
4
|
-
module Aurb
|
|
5
|
-
class Aur
|
|
6
|
-
# Compare package versions.
|
|
7
|
-
#
|
|
8
|
-
# Version.new('1.0.0') < Version.new('2.0.0') # => true
|
|
9
|
-
# Version.new('1.1-1') < Version.new('1.0-6') # => false
|
|
10
|
-
class Version
|
|
11
|
-
include Comparable
|
|
12
|
-
|
|
13
|
-
attr_reader :version
|
|
14
|
-
|
|
15
|
-
def initialize(*args)
|
|
16
|
-
@version = args.join('.').split(/\W+/).map(&:to_i)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def <=>(other)
|
|
20
|
-
[self.version.size, other.version.size].max.times do |i|
|
|
21
|
-
c = self.version[i] <=> other.version[i]
|
|
22
|
-
return c if c != 0
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# Search the AUR for given +packages+.
|
|
28
|
-
# Returns an array of results.
|
|
29
|
-
#
|
|
30
|
-
# search('aurb') # => [{:ID => ..., :Name => 'aurb', ...}, {...}]
|
|
31
|
-
def search(*packages)
|
|
32
|
-
results = []
|
|
33
|
-
packages.inject([]) do |ary, package|
|
|
34
|
-
ary << Thread.new do
|
|
35
|
-
parse_json Aurb.aur_rpc_path(:search, URI.escape(package.to_s)) do |json|
|
|
36
|
-
next if json.type =~ /error/
|
|
37
|
-
results << json.results
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end.each(&:join)
|
|
41
|
-
results.flatten.delete_if(&:blank?)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Download +packages+ from the AUR.
|
|
45
|
-
# Returns an array of downloadable package urls.
|
|
46
|
-
#
|
|
47
|
-
# download('aurb') # => ['http://.../aurb.tar.gz']
|
|
48
|
-
def download(*packages)
|
|
49
|
-
packages.map do |package|
|
|
50
|
-
Aurb.aur_download_path URI.escape(package.to_s)
|
|
51
|
-
end.select do |package|
|
|
52
|
-
!!(open package rescue false)
|
|
53
|
-
end.delete_if(&:blank?)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Returns all available info for a given package name.
|
|
57
|
-
#
|
|
58
|
-
# info('aurb') # => {:ID => ..., :Name => 'aurb', ...}
|
|
59
|
-
def info(package)
|
|
60
|
-
parse_json Aurb.aur_rpc_path(:info, package.to_s) do |json|
|
|
61
|
-
return if json.type =~ /error/
|
|
62
|
-
json.results
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Returns a +list+ of names of packages that have an upgrade
|
|
67
|
-
# available to them, which could then in turn be passed on to
|
|
68
|
-
# the +download+ method.
|
|
69
|
-
#
|
|
70
|
-
# # With Aurb on the AUR as version 1.1.2-1
|
|
71
|
-
# upgrade('aurb 0.0.0-0', 'aurb 0.9.9-9') # => [:aurb]
|
|
72
|
-
def upgrade(*list)
|
|
73
|
-
upgradables = []
|
|
74
|
-
list.inject([]) do |ary, line|
|
|
75
|
-
ary << Thread.new do
|
|
76
|
-
name, version = line.split
|
|
77
|
-
next if Dir["/var/lib/pacman/sync/community/#{name}-#{version}"].any?
|
|
78
|
-
upgradables << name.to_sym if upgradable?(name, version)
|
|
79
|
-
end
|
|
80
|
-
end.each(&:join)
|
|
81
|
-
upgradables.delete_if(&:blank?)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
protected
|
|
85
|
-
|
|
86
|
-
# Shortcut to the +Yajl+ JSON parser.
|
|
87
|
-
def parse_json(json)
|
|
88
|
-
json = Yajl::Parser.new.parse(open(json).read)
|
|
89
|
-
yield json rescue json
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
private
|
|
93
|
-
|
|
94
|
-
# Compare version of local +package+ with the one on the AUR.
|
|
95
|
-
def upgradable?(package, version)
|
|
96
|
-
local_version = Version.new(version)
|
|
97
|
-
remote_version = nil
|
|
98
|
-
parse_json Aurb.aur_rpc_path(:info, package.to_s) do |json|
|
|
99
|
-
return if json.type =~ /error/
|
|
100
|
-
remote_version = Version.new(json.results.Version)
|
|
101
|
-
end
|
|
102
|
-
remote_version && local_version < remote_version
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
data/lib/aurb/core_ext/object.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# encoding: utf-8
|
|
3
|
-
|
|
4
|
-
module Aurb
|
|
5
|
-
module CoreExt
|
|
6
|
-
module Object
|
|
7
|
-
# An object is blank if it's false, empty or a whitespace string.
|
|
8
|
-
def blank?
|
|
9
|
-
respond_to?(:empty?) ? empty? : !self
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
Object.send :include, Aurb::CoreExt::Object
|
data/test/unit/aur_test.rb
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
|
2
|
-
|
|
3
|
-
class AurTest < Test::Unit::TestCase
|
|
4
|
-
context 'Aurb::Aur ::' do
|
|
5
|
-
context 'Version' do
|
|
6
|
-
should 'be able to compare versions and return the newest' do
|
|
7
|
-
versions = [
|
|
8
|
-
{:old => '1', :new => '2' },
|
|
9
|
-
{:old => '1-3', :new => '2-1' },
|
|
10
|
-
{:old => '1.0.0-2', :new => '2.0.0-3'},
|
|
11
|
-
{:old => '1.0.pre', :new => '1.0.1' }
|
|
12
|
-
]
|
|
13
|
-
|
|
14
|
-
versions.each do |version|
|
|
15
|
-
assert_operator Aurb::Aur::Version.new(version[:old]), :<, Aurb::Aur::Version.new(version[:new])
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
context 'Aurb::Aur #' do
|
|
22
|
-
context 'upgrade' do
|
|
23
|
-
setup do
|
|
24
|
-
@list = "aurb 0.0.0-0\naurb 9.9.9-9".split(/\n/)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
should 'return an array' do
|
|
28
|
-
assert_operator Array, :===, Aurb.aur.upgrade(*@list)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
should 'contain only upgradable packages' do
|
|
32
|
-
assert_not_equal [:aurb, :aurb], Aurb.aur.upgrade(*@list)
|
|
33
|
-
assert_equal [:aurb], Aurb.aur.upgrade(*@list)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
context 'download' do
|
|
38
|
-
setup do
|
|
39
|
-
@package_working = 'aurb'
|
|
40
|
-
@package_faulty = 'foobarbaz'
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
should 'return an array' do
|
|
44
|
-
assert_operator Array, :===, Aurb.aur.download(*@package_working)
|
|
45
|
-
assert_operator Array, :===, Aurb.aur.download(*@package_faulty)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
should 'return download links' do
|
|
49
|
-
assert_equal [Aurb.aur_download_path(*@package_working)], Aurb.aur.download(*@package_working)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
should 'filter out non-existant packages' do
|
|
53
|
-
assert Aurb.aur.download(*@package_faulty).blank?
|
|
54
|
-
assert_equal [], Aurb.aur.download(*@package_faulty)
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
context 'search' do
|
|
59
|
-
setup do
|
|
60
|
-
@package_working = 'aurb'
|
|
61
|
-
@package_faulty = 'foobarbaz'
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
should 'return an array of results' do
|
|
65
|
-
assert_operator Array, :===, Aurb.aur.search(*@package_working)
|
|
66
|
-
assert_operator Array, :===, Aurb.aur.search(*@package_faulty)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
should 'filter out non-existant packages' do
|
|
70
|
-
assert Aurb.aur.search(*@package_faulty).blank?
|
|
71
|
-
assert_equal [], Aurb.aur.search(*@package_faulty)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
context 'result' do
|
|
75
|
-
should 'return an array containing hashes' do
|
|
76
|
-
assert_operator Hash, :===, Aurb.aur.search(*@package_working).first
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|