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.
@@ -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.