aurb 1.1.2 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.2
1
+ 1.2.0
@@ -5,22 +5,22 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{aurb}
8
- s.version = "1.1.2"
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-02-09}
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.rdoc"
18
+ "README.md"
19
19
  ]
20
20
  s.files = [
21
21
  ".gitignore",
22
22
  "LICENSE",
23
- "README.rdoc",
23
+ "README.md",
24
24
  "Rakefile",
25
25
  "VERSION",
26
26
  "aurb.gemspec",
@@ -12,7 +12,7 @@ require 'ansi'
12
12
  require 'archive/tar/minitar'
13
13
 
14
14
  module Aurb #:nodoc:
15
- VERSION = '1.1.2'
15
+ VERSION = '1.2.0'
16
16
 
17
17
  autoload :Aur, 'aurb/aur'
18
18
 
@@ -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(['aurb']) # => [{:ID => ..., :Name => 'aurb', ...}, {...}]
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(['aurb']) # => ['http://.../aurb.tar.gz']
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
- protected
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
- private
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
@@ -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 = ::ARGV.dup
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 "PACKAGES"', 'Download packages'
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
- def download(pkgs)
21
- pkgs = Aurb.aur.download(pkgs.split)
22
-
23
- puts 'No downloadable packages found' and return if pkgs.blank?
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
- current = index + 1
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
- Archive::Tar::Minitar.unpack(
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 "PACKAGES"', 'Search for packages'
56
- def search(pkgs)
57
- pkgs = Aurb.aur.search(pkgs.split)
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
@@ -26,7 +26,7 @@ class AurTest < Test::Unit::TestCase
26
26
  end
27
27
 
28
28
  should 'return an array' do
29
- assert Aurb.aur.upgrade(@list).is_a?(Array)
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 = ['aurb']
41
- @package_faulty = ['foobarbaz']
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
- assert Aurb.aur.download(@package_working).is_a?(Array)
46
- assert Aurb.aur.download(@package_faulty).is_a?(Array)
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(@package_working.join)], Aurb.aur.download(@package_working)
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(@package_faulty).blank?
55
- assert_equal [], Aurb.aur.download(@package_faulty)
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 = ['aurb']
62
- @package_faulty = ['foobarbaz']
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
- assert Aurb.aur.search(@package_working).is_a?(Array)
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(@package_faulty).blank?
71
- assert_equal [], Aurb.aur.search(@package_faulty)
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(@package_working).first
79
+ @result = Aurb.aur.search(*@package_working).first
77
80
  end
78
81
 
79
82
  should 'return an array containing hashes' do
80
- assert @result.is_a?(Hash)
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
- assert @key.is_a?(Symbol)
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.1.2
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-02-09 00:00:00 +01:00
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.rdoc
73
+ - README.md
74
74
  files:
75
75
  - .gitignore
76
76
  - LICENSE
77
- - README.rdoc
77
+ - README.md
78
78
  - Rakefile
79
79
  - VERSION
80
80
  - aurb.gemspec
@@ -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.