aurb 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +3 -3
- data/VERSION +1 -1
- data/aurb.gemspec +2 -2
- data/lib/aurb.rb +5 -1
- data/lib/aurb/aur.rb +29 -27
- data/lib/aurb/support.rb +0 -14
- data/test/unit/test_aur.rb +9 -5
- data/test/unit/test_support.rb +23 -24
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -12,15 +12,15 @@ Aurb can download from, search and look for updates on the AUR.
|
|
12
12
|
|
13
13
|
Download one or more packages:
|
14
14
|
|
15
|
-
$ aurb
|
15
|
+
$ aurb download "firefox-nightly opera chromium-browser-svn"
|
16
16
|
|
17
17
|
Search for one or more packages:
|
18
18
|
|
19
|
-
$ aurb
|
19
|
+
$ aurb search "firefox opera"
|
20
20
|
|
21
21
|
Look for upgrades to packages you have installed from the AUR:
|
22
22
|
|
23
|
-
$ aurb
|
23
|
+
$ aurb upgrade
|
24
24
|
|
25
25
|
== Tests
|
26
26
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.1
|
data/aurb.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{aurb}
|
8
|
-
s.version = "1.1.
|
8
|
+
s.version = "1.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Gigamo"]
|
12
|
-
s.date = %q{2010-02-
|
12
|
+
s.date = %q{2010-02-08}
|
13
13
|
s.default_executable = %q{aurb}
|
14
14
|
s.email = %q{gigamo@gmail.com}
|
15
15
|
s.executables = ["aurb"]
|
data/lib/aurb.rb
CHANGED
@@ -17,7 +17,7 @@ require 'archive/tar/minitar'
|
|
17
17
|
require 'facets/version'
|
18
18
|
|
19
19
|
module Aurb #:nodoc:
|
20
|
-
VERSION = '1.1.
|
20
|
+
VERSION = '1.1.1'
|
21
21
|
|
22
22
|
class AurbError < StandardError
|
23
23
|
def self.status_code(code = nil)
|
@@ -44,6 +44,10 @@ module Aurb #:nodoc:
|
|
44
44
|
"http://aur.archlinux.org/rpc.php?type=#{type}&arg=#{arg}"
|
45
45
|
end
|
46
46
|
|
47
|
+
def aur_download_path(pkg)
|
48
|
+
"http://aur.archlinux.org/packages/#{pkg}/#{pkg}.tar.gz"
|
49
|
+
end
|
50
|
+
|
47
51
|
def aur
|
48
52
|
@aur ||= Aur.new
|
49
53
|
end
|
data/lib/aurb/aur.rb
CHANGED
@@ -23,10 +23,8 @@ module Aurb
|
|
23
23
|
#
|
24
24
|
# download(['aurb']) # => ['http://.../aurb.tar.gz']
|
25
25
|
def download(packages)
|
26
|
-
url = lambda {|p| "http://aur.archlinux.org/packages/#{p}/#{p}.tar.gz"}
|
27
|
-
|
28
26
|
packages.map do |package|
|
29
|
-
|
27
|
+
Aurb.aur_download_path URI.escape(package.to_s)
|
30
28
|
end.select do |package|
|
31
29
|
downloadable?(package)
|
32
30
|
end.delete_if(&:blank?)
|
@@ -39,15 +37,12 @@ module Aurb
|
|
39
37
|
# # With Aurb on the AUR as version [0, 8, 2, 1]
|
40
38
|
# upgrade(['aurb 0.0.0.0', 'aurb 0.9.9.9']) # => [:aurb]
|
41
39
|
def upgrade(list)
|
42
|
-
|
43
|
-
|
44
|
-
list.each do |line|
|
40
|
+
list.inject([]) do |ary, line|
|
45
41
|
name, version = line.split
|
46
42
|
next if in_community?(name)
|
47
|
-
|
43
|
+
ary << name.to_sym if upgradable?(name, version)
|
44
|
+
ary
|
48
45
|
end
|
49
|
-
|
50
|
-
upgradables
|
51
46
|
end
|
52
47
|
|
53
48
|
protected
|
@@ -64,39 +59,46 @@ module Aurb
|
|
64
59
|
|
65
60
|
# Compare version of local +package+ with the one on the AUR.
|
66
61
|
def upgradable?(package, version)
|
67
|
-
|
68
|
-
|
69
|
-
remote_package = json.results
|
62
|
+
parse_json(Aurb.aur_path(:info, package.to_s)) do |json|
|
63
|
+
return false if json.type =~ /error/
|
70
64
|
|
71
|
-
|
72
|
-
remote_version = VersionNumber.new(remote_package.Version)
|
65
|
+
remote_package = json.results
|
73
66
|
|
74
|
-
|
67
|
+
local_version = VersionNumber.new(version)
|
68
|
+
remote_version = VersionNumber.new(remote_package.Version)
|
69
|
+
|
70
|
+
local_version < remote_version
|
71
|
+
end
|
75
72
|
end
|
76
73
|
|
77
74
|
# Returns an array containing a hash of search results
|
78
75
|
# for a given +package+.
|
79
76
|
def list_search_results(package)
|
80
77
|
json = parse_json(Aurb.aur_path(:search, URI.escape(package.to_s)))
|
81
|
-
return if json.type =~ /error/
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
78
|
+
return [] if json.type =~ /error/
|
79
|
+
|
80
|
+
ids = json.results.map(&:ID)
|
81
|
+
ids.inject([]) do |ary, id|
|
82
|
+
parse_json(Aurb.aur_path(:info, id)) do |json|
|
83
|
+
next if json.type =~ /error/
|
84
|
+
result = json.results.symbolize_keys
|
85
|
+
ary << result unless in_community?(result.Name)
|
86
|
+
end
|
87
|
+
ary
|
90
88
|
end
|
91
|
-
|
92
|
-
results
|
93
89
|
end
|
94
90
|
|
95
91
|
private
|
96
92
|
|
97
93
|
# Shortcut to the +Yajl+ JSON parser.
|
98
94
|
def parse_json(json)
|
99
|
-
Yajl::Parser.new.parse(open(json).read)
|
95
|
+
json = Yajl::Parser.new.parse(open(json).read)
|
96
|
+
|
97
|
+
if block_given?
|
98
|
+
yield json
|
99
|
+
else
|
100
|
+
json
|
101
|
+
end
|
100
102
|
end
|
101
103
|
end
|
102
104
|
end
|
data/lib/aurb/support.rb
CHANGED
@@ -30,20 +30,6 @@ class Hash
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
-
class Array
|
34
|
-
# Extracts options from a set of arguments.
|
35
|
-
#
|
36
|
-
# def options(*args)
|
37
|
-
# args.extract_options!
|
38
|
-
# end
|
39
|
-
#
|
40
|
-
# options(1, 2) # => {}
|
41
|
-
# options(1, 2, :a => :b) # => {:a=>:b}
|
42
|
-
def extract_options!
|
43
|
-
last.is_a?(Hash) ? pop : {}
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
33
|
class String
|
48
34
|
# Colors a string with +color+.
|
49
35
|
# Uses the ANSICode library provided by +facets+.
|
data/test/unit/test_aur.rb
CHANGED
@@ -24,7 +24,6 @@ class AurTest < Test::Unit::TestCase
|
|
24
24
|
|
25
25
|
context 'download' do
|
26
26
|
setup do
|
27
|
-
@url = lambda {|p| "http://aur.archlinux.org/packages/#{p}/#{p}.tar.gz"}
|
28
27
|
@package_working = ['awesome-git']
|
29
28
|
@package_faulty = ['awesome']
|
30
29
|
end
|
@@ -35,7 +34,7 @@ class AurTest < Test::Unit::TestCase
|
|
35
34
|
end
|
36
35
|
|
37
36
|
should 'return download links' do
|
38
|
-
assert_equal [
|
37
|
+
assert_equal [Aurb.aur_download_path(@package_working.join)], @aur.download(@package_working)
|
39
38
|
end
|
40
39
|
|
41
40
|
should 'filter out non-existant packages' do
|
@@ -45,16 +44,21 @@ class AurTest < Test::Unit::TestCase
|
|
45
44
|
|
46
45
|
context 'search' do
|
47
46
|
setup do
|
48
|
-
@
|
47
|
+
@package_working = ['aurb']
|
48
|
+
@package_faulty = ['foobarbaz']
|
49
49
|
end
|
50
50
|
|
51
51
|
should 'return an array of results' do
|
52
|
-
assert @aur.search(@
|
52
|
+
assert @aur.search(@package_working).is_a?(Array)
|
53
|
+
end
|
54
|
+
|
55
|
+
should 'filter out non-existant packages' do
|
56
|
+
assert_equal [], @aur.search(@package_faulty)
|
53
57
|
end
|
54
58
|
|
55
59
|
context 'result' do
|
56
60
|
setup do
|
57
|
-
@result = @aur.search(@
|
61
|
+
@result = @aur.search(@package_working).first
|
58
62
|
end
|
59
63
|
|
60
64
|
should 'return an array containing hashes' do
|
data/test/unit/test_support.rb
CHANGED
@@ -1,40 +1,39 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
|
2
2
|
|
3
3
|
class SupportTest < Test::Unit::TestCase
|
4
|
-
context '
|
4
|
+
context 'Object' do
|
5
5
|
should 'be able to check for blank' do
|
6
6
|
assert ''.blank?
|
7
7
|
assert nil.blank?
|
8
|
+
assert [].blank?
|
8
9
|
end
|
10
|
+
end
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
context 'Hash' do
|
13
|
+
setup do
|
14
|
+
@hash_str = {'hello' => 'world'}
|
15
|
+
@hash_sym = {:hello => 'world'}
|
16
|
+
end
|
15
17
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
should 'be able to symbolize keys' do
|
19
|
+
assert_equal @hash_sym, @hash_str.symbolize_keys
|
20
|
+
symbolized = @hash_str.symbolize_keys!
|
21
|
+
assert_equal @hash_sym, symbolized
|
22
|
+
end
|
21
23
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
24
|
+
should 'provide methods for its keys through method_missing' do
|
25
|
+
assert_equal 'world', @hash_str.hello
|
26
|
+
assert_equal 'world', @hash_sym.hello
|
26
27
|
end
|
28
|
+
end
|
27
29
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
30
|
+
context 'String' do
|
31
|
+
setup do
|
32
|
+
@str = 'foo'
|
33
|
+
end
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
assert_equal({:a => :b}, @array_with_opts.extract_options!)
|
37
|
-
end
|
35
|
+
should 'be able to colorize itself through the ansi library' do
|
36
|
+
assert_equal "\e[34mfoo\e[0m", @str.colorize(:blue)
|
38
37
|
end
|
39
38
|
end
|
40
39
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aurb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gigamo
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-08 00:00:00 +01:00
|
13
13
|
default_executable: aurb
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|