aurb 1.1.2 → 1.2.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 +41 -0
- data/VERSION +1 -1
- data/aurb.gemspec +4 -4
- data/lib/aurb.rb +1 -1
- data/lib/aurb/aur.rb +7 -12
- data/lib/aurb/cli.rb +18 -30
- data/test/unit/test_aur.rb +19 -20
- metadata +4 -4
- data/README.rdoc +0 -37
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Aurb
|
2
|
+
|
3
|
+
An AUR (Arch User Repository) utility.
|
4
|
+
|
5
|
+
Aurb can download from, search and look for updates on the AUR.
|
6
|
+
|
7
|
+
## Install
|
8
|
+
|
9
|
+
For Arch users, aurb is [available on the aur](http://aur.archlinux.org/packages.php?ID=24395).
|
10
|
+
|
11
|
+
If you rather install it as a gem, you could:
|
12
|
+
|
13
|
+
# gem install aurb
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
Download one or more packages:
|
18
|
+
|
19
|
+
$ aurb download hon ioquake3
|
20
|
+
|
21
|
+
Search for one or more packages:
|
22
|
+
|
23
|
+
$ aurb search firefox opera
|
24
|
+
|
25
|
+
Look for upgrades to packages you have installed from the AUR:
|
26
|
+
|
27
|
+
$ aurb upgrade
|
28
|
+
|
29
|
+
## Tests
|
30
|
+
|
31
|
+
Clone the project, and run:
|
32
|
+
|
33
|
+
$ rake test
|
34
|
+
|
35
|
+
## Documentation
|
36
|
+
|
37
|
+
See [rdoc.info](http://rdoc.info/projects/gigamo/aurb).
|
38
|
+
|
39
|
+
## Copyright
|
40
|
+
|
41
|
+
Copyright (c) 2009-2010 Gigamo. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
data/aurb.gemspec
CHANGED
@@ -5,22 +5,22 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{aurb}
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.2.0"
|
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-
|
12
|
+
s.date = %q{2010-03-04}
|
13
13
|
s.default_executable = %q{aurb}
|
14
14
|
s.email = %q{gigamo@gmail.com}
|
15
15
|
s.executables = ["aurb"]
|
16
16
|
s.extra_rdoc_files = [
|
17
17
|
"LICENSE",
|
18
|
-
"README.
|
18
|
+
"README.md"
|
19
19
|
]
|
20
20
|
s.files = [
|
21
21
|
".gitignore",
|
22
22
|
"LICENSE",
|
23
|
-
"README.
|
23
|
+
"README.md",
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
26
|
"aurb.gemspec",
|
data/lib/aurb.rb
CHANGED
data/lib/aurb/aur.rb
CHANGED
@@ -27,8 +27,8 @@ module Aurb
|
|
27
27
|
# Search the AUR for given +packages+.
|
28
28
|
# Returns an array of results.
|
29
29
|
#
|
30
|
-
# search(
|
31
|
-
def search(packages)
|
30
|
+
# search('aurb') # => [{:ID => ..., :Name => 'aurb', ...}, {...}]
|
31
|
+
def search(*packages)
|
32
32
|
packages.map do |package|
|
33
33
|
list_search_results(package)
|
34
34
|
end.flatten.delete_if(&:blank?)
|
@@ -37,8 +37,8 @@ module Aurb
|
|
37
37
|
# Download +packages+ from the AUR.
|
38
38
|
# Returns an array of downloadable package urls.
|
39
39
|
#
|
40
|
-
# download(
|
41
|
-
def download(packages)
|
40
|
+
# download('aurb') # => ['http://.../aurb.tar.gz']
|
41
|
+
def download(*packages)
|
42
42
|
packages.map do |package|
|
43
43
|
Aurb.aur_download_path URI.escape(package.to_s)
|
44
44
|
end.select do |package|
|
@@ -61,7 +61,7 @@ module Aurb
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
|
64
|
+
protected
|
65
65
|
|
66
66
|
# See if +package+ is available in the community repository.
|
67
67
|
def in_community?(package)
|
@@ -103,17 +103,12 @@ module Aurb
|
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
|
-
|
106
|
+
private
|
107
107
|
|
108
108
|
# Shortcut to the +Yajl+ JSON parser.
|
109
109
|
def parse_json(json)
|
110
110
|
json = Yajl::Parser.new.parse(open(json).read)
|
111
|
-
|
112
|
-
if block_given?
|
113
|
-
yield json
|
114
|
-
else
|
115
|
-
json
|
116
|
-
end
|
111
|
+
yield json rescue json
|
117
112
|
end
|
118
113
|
end
|
119
114
|
end
|
data/lib/aurb/cli.rb
CHANGED
@@ -6,22 +6,23 @@ require File.expand_path(File.dirname(__FILE__) + '/../aurb')
|
|
6
6
|
|
7
7
|
module Aurb
|
8
8
|
class CLI < Thor
|
9
|
-
ARGV
|
9
|
+
ARGV = ::ARGV.dup
|
10
10
|
|
11
11
|
map '-d' => :download
|
12
12
|
map '-s' => :search
|
13
13
|
map '-u' => :upgrade
|
14
14
|
|
15
|
-
desc 'download
|
15
|
+
desc 'download PACKAGES', 'Download packages'
|
16
16
|
method_option :path,
|
17
17
|
:type => :string,
|
18
18
|
:default => File.join(ENV[:HOME], 'abs'),
|
19
19
|
:banner => 'Specify the path to download to'
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
method_option :keep,
|
21
|
+
:type => :boolean,
|
22
|
+
:banner => 'Keep the tarball after downloading'
|
23
|
+
def download(*pkgs)
|
24
|
+
pkgs = Aurb.aur.download(*pkgs)
|
25
|
+
puts 'No downloadable packages found'.colorize(:red) and return if pkgs.blank?
|
25
26
|
opts = options.dup
|
26
27
|
path = opts[:path][0] == '/' ? opts[:path] : File.join(Dir.pwd, opts[:path])
|
27
28
|
if File.exist?(path)
|
@@ -29,41 +30,30 @@ module Aurb
|
|
29
30
|
else
|
30
31
|
raise AurbDownloadError, "'#{path}' is not a valid path"
|
31
32
|
end
|
32
|
-
|
33
33
|
pkgs.each_with_index do |package, index|
|
34
|
-
|
35
|
-
total = pkgs.size
|
36
|
-
local = package.split('/')[-1]
|
37
|
-
|
34
|
+
local = package.split('/')[-1]
|
38
35
|
Dir.chdir path do
|
39
36
|
open package do |remote|
|
40
37
|
File.open local, 'wb' do |local|
|
41
38
|
local.write remote.read
|
42
39
|
end
|
43
40
|
end
|
44
|
-
|
45
|
-
|
46
|
-
Zlib::GzipReader.new(File.open(local, 'rb')), Dir.pwd
|
47
|
-
)
|
48
|
-
File.delete local
|
41
|
+
Archive::Tar::Minitar.unpack Zlib::GzipReader.new(File.open(local, 'rb')), Dir.pwd
|
42
|
+
File.delete local unless opts.keep?
|
49
43
|
end
|
50
|
-
|
51
|
-
puts "(#{current}/#{total}) downloaded #{local}"
|
44
|
+
puts "(#{index+1}/#{pkgs.size}) downloaded #{local}"
|
52
45
|
end
|
53
46
|
end
|
54
47
|
|
55
|
-
desc 'search
|
56
|
-
def search(pkgs)
|
57
|
-
pkgs = Aurb.aur.search(pkgs
|
58
|
-
|
59
|
-
puts 'No results found' and return if pkgs.blank?
|
60
|
-
|
48
|
+
desc 'search PACKAGES', 'Search for packages'
|
49
|
+
def search(*pkgs)
|
50
|
+
pkgs = Aurb.aur.search(*pkgs)
|
51
|
+
puts 'No results found'.colorize(:red) and return if pkgs.blank?
|
61
52
|
pkgs.each do |package|
|
62
53
|
status = package.OutOfDate == '1' ? '✘'.colorize(:red) : '✔'.colorize(:green)
|
63
54
|
name, version, description = package.Name.colorize(:yellow),
|
64
55
|
package.Version,
|
65
56
|
package.Description
|
66
|
-
|
67
57
|
puts "[#{status}] #{name} (#{version})\n #{description}"
|
68
58
|
end
|
69
59
|
end
|
@@ -72,11 +62,9 @@ module Aurb
|
|
72
62
|
def upgrade
|
73
63
|
list = `pacman -Qm`.split(/\n/)
|
74
64
|
pkgs = Aurb.aur.upgrade(list)
|
75
|
-
|
76
|
-
puts 'Nothing to upgrade' and return if pkgs.blank?
|
77
|
-
|
65
|
+
puts 'Nothing to upgrade'.colorize(:red) and return if pkgs.blank?
|
78
66
|
pkgs.each do |package|
|
79
|
-
puts "#{package} has an upgrade available"
|
67
|
+
puts "#{package.to_s.colorize(:yellow)} has an upgrade available"
|
80
68
|
end
|
81
69
|
end
|
82
70
|
end
|
data/test/unit/test_aur.rb
CHANGED
@@ -26,7 +26,7 @@ class AurTest < Test::Unit::TestCase
|
|
26
26
|
end
|
27
27
|
|
28
28
|
should 'return an array' do
|
29
|
-
|
29
|
+
assert_operator Array, :===, Aurb.aur.upgrade(@list)
|
30
30
|
end
|
31
31
|
|
32
32
|
should 'contain only upgradable packages' do
|
@@ -37,56 +37,55 @@ class AurTest < Test::Unit::TestCase
|
|
37
37
|
|
38
38
|
context 'download' do
|
39
39
|
setup do
|
40
|
-
@package_working =
|
41
|
-
@package_faulty =
|
40
|
+
@package_working = 'aurb'
|
41
|
+
@package_faulty = 'foobarbaz'
|
42
|
+
@package_multi = 'aurb', 'yaourt'
|
42
43
|
end
|
43
44
|
|
44
45
|
should 'return an array' do
|
45
|
-
|
46
|
-
|
46
|
+
assert_operator Array, :===, Aurb.aur.download(*@package_working)
|
47
|
+
assert_operator Array, :===, Aurb.aur.download(*@package_faulty)
|
47
48
|
end
|
48
49
|
|
49
50
|
should 'return download links' do
|
50
|
-
assert_equal [Aurb.aur_download_path(
|
51
|
+
assert_equal [Aurb.aur_download_path(*@package_working)], Aurb.aur.download(*@package_working)
|
51
52
|
end
|
52
53
|
|
53
54
|
should 'filter out non-existant packages' do
|
54
|
-
assert Aurb.aur.download(
|
55
|
-
assert_equal [], Aurb.aur.download(
|
55
|
+
assert Aurb.aur.download(*@package_faulty).blank?
|
56
|
+
assert_equal [], Aurb.aur.download(*@package_faulty)
|
56
57
|
end
|
57
58
|
end
|
58
59
|
|
59
60
|
context 'search' do
|
60
61
|
setup do
|
61
|
-
@package_working =
|
62
|
-
@package_faulty =
|
62
|
+
@package_working = 'aurb'
|
63
|
+
@package_faulty = 'foobarbaz'
|
64
|
+
@package_multi = 'aurb', 'yaourt'
|
63
65
|
end
|
64
66
|
|
65
67
|
should 'return an array of results' do
|
66
|
-
|
68
|
+
assert_operator Array, :===, Aurb.aur.search(*@package_working)
|
69
|
+
assert_operator Array, :===, Aurb.aur.search(*@package_faulty)
|
67
70
|
end
|
68
71
|
|
69
72
|
should 'filter out non-existant packages' do
|
70
|
-
assert Aurb.aur.search(
|
71
|
-
assert_equal [], Aurb.aur.search(
|
73
|
+
assert Aurb.aur.search(*@package_faulty).blank?
|
74
|
+
assert_equal [], Aurb.aur.search(*@package_faulty)
|
72
75
|
end
|
73
76
|
|
74
77
|
context 'result' do
|
75
78
|
setup do
|
76
|
-
@result = Aurb.aur.search(
|
79
|
+
@result = Aurb.aur.search(*@package_working).first
|
77
80
|
end
|
78
81
|
|
79
82
|
should 'return an array containing hashes' do
|
80
|
-
|
83
|
+
assert_operator Hash, :===, @result
|
81
84
|
end
|
82
85
|
|
83
86
|
context 'keys' do
|
84
|
-
setup do
|
85
|
-
@key = @result.keys.first
|
86
|
-
end
|
87
|
-
|
88
87
|
should 'be symbolized' do
|
89
|
-
|
88
|
+
assert_operator Symbol, :===, @result.keys.first
|
90
89
|
end
|
91
90
|
end
|
92
91
|
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.
|
4
|
+
version: 1.2.0
|
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-
|
12
|
+
date: 2010-03-04 00:00:00 +01:00
|
13
13
|
default_executable: aurb
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -70,11 +70,11 @@ extensions: []
|
|
70
70
|
|
71
71
|
extra_rdoc_files:
|
72
72
|
- LICENSE
|
73
|
-
- README.
|
73
|
+
- README.md
|
74
74
|
files:
|
75
75
|
- .gitignore
|
76
76
|
- LICENSE
|
77
|
-
- README.
|
77
|
+
- README.md
|
78
78
|
- Rakefile
|
79
79
|
- VERSION
|
80
80
|
- aurb.gemspec
|
data/README.rdoc
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
= Aurb
|
2
|
-
|
3
|
-
An AUR (Arch User Repository) utility.
|
4
|
-
|
5
|
-
Aurb can download from, search and look for updates on the AUR.
|
6
|
-
|
7
|
-
== Install
|
8
|
-
|
9
|
-
$ gem install aurb
|
10
|
-
|
11
|
-
== Usage
|
12
|
-
|
13
|
-
Download one or more packages:
|
14
|
-
|
15
|
-
$ aurb download "firefox-nightly opera chromium-browser-svn"
|
16
|
-
|
17
|
-
Search for one or more packages:
|
18
|
-
|
19
|
-
$ aurb search "firefox opera"
|
20
|
-
|
21
|
-
Look for upgrades to packages you have installed from the AUR:
|
22
|
-
|
23
|
-
$ aurb upgrade
|
24
|
-
|
25
|
-
== Tests
|
26
|
-
|
27
|
-
Just clone the project, and run
|
28
|
-
|
29
|
-
$ rake test:units
|
30
|
-
|
31
|
-
== Documentation
|
32
|
-
|
33
|
-
See http://rdoc.info/projects/gigamo/aurb
|
34
|
-
|
35
|
-
== Copyright
|
36
|
-
|
37
|
-
Copyright (c) 2009-2010 Gigamo. See LICENSE for details.
|