aurb 1.2.0 → 1.2.1

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/.gitignore CHANGED
@@ -5,3 +5,4 @@ InstalledFiles
5
5
  doc
6
6
  pkg
7
7
  .yardoc
8
+ *.gem
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.2.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.2.0"
8
+ s.version = "1.2.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-03-04}
12
+ s.date = %q{2010-03-05}
13
13
  s.default_executable = %q{aurb}
14
14
  s.email = %q{gigamo@gmail.com}
15
15
  s.executables = ["aurb"]
@@ -28,7 +28,11 @@ Gem::Specification.new do |s|
28
28
  "lib/aurb.rb",
29
29
  "lib/aurb/aur.rb",
30
30
  "lib/aurb/cli.rb",
31
- "lib/aurb/support.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",
32
36
  "test/test_helper.rb",
33
37
  "test/unit/test_aur.rb",
34
38
  "test/unit/test_support.rb"
data/lib/aurb.rb CHANGED
@@ -12,8 +12,6 @@ require 'ansi'
12
12
  require 'archive/tar/minitar'
13
13
 
14
14
  module Aurb #:nodoc:
15
- VERSION = '1.2.0'
16
-
17
15
  autoload :Aur, 'aurb/aur'
18
16
 
19
17
  class AurbError < StandardError
@@ -35,7 +33,7 @@ module Aurb #:nodoc:
35
33
  @logger ||= Logger.new(STDOUT)
36
34
  end
37
35
 
38
- def aur_path(type, arg)
36
+ def aur_rpc_path(type, arg)
39
37
  "http://aur.archlinux.org/rpc.php?type=#{type}&arg=#{arg}"
40
38
  end
41
39
 
@@ -49,4 +47,4 @@ module Aurb #:nodoc:
49
47
  end
50
48
  end
51
49
 
52
- require 'aurb/support'
50
+ require 'aurb/core_ext'
data/lib/aurb/aur.rb CHANGED
@@ -42,7 +42,7 @@ module Aurb
42
42
  packages.map do |package|
43
43
  Aurb.aur_download_path URI.escape(package.to_s)
44
44
  end.select do |package|
45
- downloadable?(package)
45
+ !!(open package rescue false)
46
46
  end.delete_if(&:blank?)
47
47
  end
48
48
 
@@ -51,53 +51,42 @@ module Aurb
51
51
  # the +download+ method.
52
52
  #
53
53
  # # With Aurb on the AUR as version 1.1.2-1
54
- # upgrade(['aurb 0.0.0-0', 'aurb 0.9.9-9']) # => [:aurb]
55
- def upgrade(list)
54
+ # upgrade('aurb 0.0.0-0', 'aurb 0.9.9-9') # => [:aurb]
55
+ def upgrade(*list)
56
+ upgradables = []
56
57
  list.inject([]) do |ary, line|
57
- name, version = line.split
58
- next if in_community?(name)
59
- ary << name.to_sym if upgradable?(name, version)
60
- ary
61
- end
58
+ ary << Thread.new do
59
+ name, version = line.split
60
+ next if Dir["/var/lib/pacman/sync/community/#{name}-#{version}"].any?
61
+ upgradables << name.to_sym if upgradable?(name, version)
62
+ end
63
+ end.each(&:join)
64
+ upgradables
62
65
  end
63
66
 
64
67
  protected
65
68
 
66
- # See if +package+ is available in the community repository.
67
- def in_community?(package)
68
- Dir["/var/lib/pacman/sync/community/#{package}-*"].any?
69
- end
70
-
71
- # Check if +package+ is available for download.
72
- def downloadable?(package)
73
- open package rescue false
74
- end
75
-
76
69
  # Compare version of local +package+ with the one on the AUR.
77
70
  def upgradable?(package, version)
78
71
  local_version = Version.new(version)
79
72
  remote_version = nil
80
-
81
- parse_json Aurb.aur_path(:info, package.to_s) do |json|
73
+ parse_json Aurb.aur_rpc_path(:info, package.to_s) do |json|
82
74
  return if json.type =~ /error/
83
75
  remote_version = Version.new(json.results.Version)
84
76
  end
85
-
86
77
  remote_version && local_version < remote_version
87
78
  end
88
79
 
89
80
  # Returns an array containing a hash of search results
90
81
  # for a given +package+.
91
82
  def list_search_results(package)
92
- json = parse_json(Aurb.aur_path(:search, URI.escape(package.to_s)))
83
+ json = parse_json(Aurb.aur_rpc_path(:search, URI.escape(package.to_s)))
93
84
  return [] if json.type =~ /error/
94
-
95
85
  ids = json.results.map(&:ID)
96
86
  ids.inject([]) do |ary, id|
97
- parse_json Aurb.aur_path(:info, id) do |json|
87
+ parse_json Aurb.aur_rpc_path(:info, id) do |json|
98
88
  next if json.type =~ /error/
99
- result = json.results.symbolize_keys
100
- ary << result unless in_community?(result.Name)
89
+ ary << json.results.symbolize_keys
101
90
  end
102
91
  ary
103
92
  end
data/lib/aurb/cli.rb CHANGED
@@ -1,16 +1,18 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
3
 
4
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/..'
4
5
  require 'thor'
5
- require File.expand_path(File.dirname(__FILE__) + '/../aurb')
6
+ require 'aurb'
6
7
 
7
8
  module Aurb
8
9
  class CLI < Thor
9
10
  ARGV = ::ARGV.dup
10
11
 
11
- map '-d' => :download
12
- map '-s' => :search
13
- map '-u' => :upgrade
12
+ map %w[-d --download] => :download,
13
+ %w[-s --search] => :search,
14
+ %w[-u --upgrade] => :upgrade,
15
+ %w[-v --version] => :version
14
16
 
15
17
  desc 'download PACKAGES', 'Download packages'
16
18
  method_option :path,
@@ -61,11 +63,19 @@ module Aurb
61
63
  desc 'upgrade', 'Search for upgrades to installed packages'
62
64
  def upgrade
63
65
  list = `pacman -Qm`.split(/\n/)
64
- pkgs = Aurb.aur.upgrade(list)
66
+ pkgs = Aurb.aur.upgrade(*list)
65
67
  puts 'Nothing to upgrade'.colorize(:red) and return if pkgs.blank?
66
68
  pkgs.each do |package|
67
69
  puts "#{package.to_s.colorize(:yellow)} has an upgrade available"
68
70
  end
69
71
  end
72
+
73
+ desc 'version', 'Show version and exit'
74
+ def version
75
+ require 'aurb/version'
76
+ require 'thor/version'
77
+ puts "Aurb v#{Aurb::VERSION} - Thor v#{Thor::VERSION}"
78
+ puts 'Copyright (c) 2009-2010 Gigamo <gigamo@gmail.com>'
79
+ end
70
80
  end
71
81
  end
@@ -0,0 +1,5 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__)
2
+
3
+ require 'core_ext/object'
4
+ require 'core_ext/hash'
5
+ require 'core_ext/string'
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ module Aurb
5
+ module CoreExt
6
+ module Hash
7
+ # Returns a new hash with all keys converted to symbols.
8
+ def symbolize_keys
9
+ inject({}) do |options, (key, value)|
10
+ options[(key.to_sym rescue key) || key] = value
11
+ options
12
+ end
13
+ end
14
+
15
+ # Destructively converts all keys to symbols.
16
+ def symbolize_keys!
17
+ self.replace(self.symbolize_keys)
18
+ end
19
+
20
+ # Delegation
21
+ def method_missing(key)
22
+ self.symbolize_keys[key.to_sym]
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ Hash.send :include, Aurb::CoreExt::Hash
@@ -0,0 +1,15 @@
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
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ module Aurb
5
+ module CoreExt
6
+ module String
7
+ # Colors a string with +color+.
8
+ # Uses the ANSICode library provided by +facets+.
9
+ #
10
+ # "Hello".colorize(:blue) # => "\e[34mHello\e[0m"
11
+ #
12
+ # For more information on available effects, see
13
+ # http://facets.rubyforge.org/apidoc/api/more/classes/ANSICode.html
14
+ def colorize(effect)
15
+ ANSI::Code.send(effect.to_sym) << self << ANSI::Code.clear
16
+ rescue
17
+ self
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ String.send :include, Aurb::CoreExt::String
@@ -0,0 +1,3 @@
1
+ module Aurb
2
+ VERSION = '1.2.1'.freeze
3
+ end
@@ -26,12 +26,12 @@ class AurTest < Test::Unit::TestCase
26
26
  end
27
27
 
28
28
  should 'return an array' do
29
- assert_operator Array, :===, Aurb.aur.upgrade(@list)
29
+ assert_operator Array, :===, Aurb.aur.upgrade(*@list)
30
30
  end
31
31
 
32
32
  should 'contain only upgradable packages' do
33
- assert_not_equal [:aurb, :aurb], Aurb.aur.upgrade(@list)
34
- assert_equal [:aurb], Aurb.aur.upgrade(@list)
33
+ assert_not_equal [:aurb, :aurb], Aurb.aur.upgrade(*@list)
34
+ assert_equal [:aurb], Aurb.aur.upgrade(*@list)
35
35
  end
36
36
  end
37
37
 
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.2.0
4
+ version: 1.2.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-03-04 00:00:00 +01:00
12
+ date: 2010-03-05 00:00:00 +01:00
13
13
  default_executable: aurb
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -82,7 +82,11 @@ files:
82
82
  - lib/aurb.rb
83
83
  - lib/aurb/aur.rb
84
84
  - lib/aurb/cli.rb
85
- - lib/aurb/support.rb
85
+ - lib/aurb/core_ext.rb
86
+ - lib/aurb/core_ext/hash.rb
87
+ - lib/aurb/core_ext/object.rb
88
+ - lib/aurb/core_ext/string.rb
89
+ - lib/aurb/version.rb
86
90
  - test/test_helper.rb
87
91
  - test/unit/test_aur.rb
88
92
  - test/unit/test_support.rb
data/lib/aurb/support.rb DELETED
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: utf-8
3
- #
4
- # Most of these extracted from Rails source (http://github.com/rails/rails)
5
-
6
- class 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
-
13
- class Hash
14
- # Returns a new hash with all keys converted to symbols.
15
- def symbolize_keys
16
- inject({}) do |options, (key, value)|
17
- options[(key.to_sym rescue key) || key] = value
18
- options
19
- end
20
- end
21
-
22
- # Destructively converts all keys to symbols.
23
- def symbolize_keys!
24
- self.replace(self.symbolize_keys)
25
- end
26
-
27
- # Delegation
28
- def method_missing(key)
29
- self.symbolize_keys[key.to_sym]
30
- end
31
- end
32
-
33
- class String
34
- # Colors a string with +color+.
35
- # Uses the ANSICode library provided by +facets+.
36
- #
37
- # "Hello".colorize(:blue) # => "\e[34mHello\e[0m"
38
- #
39
- # For more information on available effects, see
40
- # http://facets.rubyforge.org/apidoc/api/more/classes/ANSICode.html
41
- def colorize(effect)
42
- ANSI::Code.send(effect.to_sym) << self << ANSI::Code.clear
43
- rescue
44
- self
45
- end
46
- end