aurb 1.1.1 → 1.1.2

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/Rakefile CHANGED
@@ -14,7 +14,6 @@ Jeweler::Tasks.new do |gem|
14
14
  gem.add_dependency('thor')
15
15
  gem.add_dependency('ansi')
16
16
  gem.add_dependency('archive-tar-minitar')
17
- gem.add_dependency('facets')
18
17
 
19
18
  gem.add_development_dependency('shoulda')
20
19
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.1
1
+ 1.1.2
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{aurb}
8
- s.version = "1.1.1"
8
+ s.version = "1.1.2"
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-08}
12
+ s.date = %q{2010-02-09}
13
13
  s.default_executable = %q{aurb}
14
14
  s.email = %q{gigamo@gmail.com}
15
15
  s.executables = ["aurb"]
@@ -53,14 +53,12 @@ Gem::Specification.new do |s|
53
53
  s.add_runtime_dependency(%q<thor>, [">= 0"])
54
54
  s.add_runtime_dependency(%q<ansi>, [">= 0"])
55
55
  s.add_runtime_dependency(%q<archive-tar-minitar>, [">= 0"])
56
- s.add_runtime_dependency(%q<facets>, [">= 0"])
57
56
  s.add_development_dependency(%q<shoulda>, [">= 0"])
58
57
  else
59
58
  s.add_dependency(%q<yajl-ruby>, [">= 0"])
60
59
  s.add_dependency(%q<thor>, [">= 0"])
61
60
  s.add_dependency(%q<ansi>, [">= 0"])
62
61
  s.add_dependency(%q<archive-tar-minitar>, [">= 0"])
63
- s.add_dependency(%q<facets>, [">= 0"])
64
62
  s.add_dependency(%q<shoulda>, [">= 0"])
65
63
  end
66
64
  else
@@ -68,7 +66,6 @@ Gem::Specification.new do |s|
68
66
  s.add_dependency(%q<thor>, [">= 0"])
69
67
  s.add_dependency(%q<ansi>, [">= 0"])
70
68
  s.add_dependency(%q<archive-tar-minitar>, [">= 0"])
71
- s.add_dependency(%q<facets>, [">= 0"])
72
69
  s.add_dependency(%q<shoulda>, [">= 0"])
73
70
  end
74
71
  end
data/bin/aurb CHANGED
@@ -1,10 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
- #
4
- #--
5
- # Copyright protects this work.
6
- # See LICENSE file for details.
7
- #++
8
3
 
9
4
  require File.expand_path(File.dirname(__FILE__) + '/../lib/aurb/cli')
10
5
 
@@ -1,23 +1,20 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
- #
4
- #--
5
- # Copyright protects this work.
6
- # See LICENSE file for details.
7
- #++
3
+
4
+ $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__))
8
5
 
9
6
  require 'logger'
10
- require 'getoptlong'
11
7
  require 'open-uri'
12
8
 
13
9
  require 'zlib'
14
10
  require 'yajl'
15
11
  require 'ansi'
16
12
  require 'archive/tar/minitar'
17
- require 'facets/version'
18
13
 
19
14
  module Aurb #:nodoc:
20
- VERSION = '1.1.1'
15
+ VERSION = '1.1.2'
16
+
17
+ autoload :Aur, 'aurb/aur'
21
18
 
22
19
  class AurbError < StandardError
23
20
  def self.status_code(code = nil)
@@ -34,8 +31,6 @@ module Aurb #:nodoc:
34
31
  class AurbArgumentError < AurbError; status_code(12); end
35
32
 
36
33
  class << self
37
- attr_reader :aur
38
-
39
34
  def logger
40
35
  @logger ||= Logger.new(STDOUT)
41
36
  end
@@ -54,6 +49,4 @@ module Aurb #:nodoc:
54
49
  end
55
50
  end
56
51
 
57
- $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__))
58
- require 'aurb/aur'
59
52
  require 'aurb/support'
@@ -1,13 +1,29 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
- #
4
- #--
5
- # Copyright protects this work.
6
- # See LICENSE file for details.
7
- #++
8
3
 
9
4
  module Aurb
10
5
  class Aur
6
+ # Compare package versions.
7
+ #
8
+ # Version.new('1.0.0') < Version.new('2.0.0') # => true
9
+ # Version.new('1.1-1') < Version.new('1.0-6') # => false
10
+ class Version
11
+ include Comparable
12
+
13
+ attr_reader :version
14
+
15
+ def initialize(*args)
16
+ @version = args.join('.').split(/\W+/).map(&:to_i)
17
+ end
18
+
19
+ def <=>(other)
20
+ [self.version.size, other.version.size].max.times do |i|
21
+ c = self.version[i] <=> other.version[i]
22
+ return c if c != 0
23
+ end
24
+ end
25
+ end
26
+
11
27
  # Search the AUR for given +packages+.
12
28
  # Returns an array of results.
13
29
  #
@@ -34,8 +50,8 @@ module Aurb
34
50
  # available to them, which could then in turn be passed on to
35
51
  # the +download+ method.
36
52
  #
37
- # # With Aurb on the AUR as version [0, 8, 2, 1]
38
- # upgrade(['aurb 0.0.0.0', 'aurb 0.9.9.9']) # => [:aurb]
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]
39
55
  def upgrade(list)
40
56
  list.inject([]) do |ary, line|
41
57
  name, version = line.split
@@ -59,16 +75,15 @@ module Aurb
59
75
 
60
76
  # Compare version of local +package+ with the one on the AUR.
61
77
  def upgradable?(package, version)
62
- parse_json(Aurb.aur_path(:info, package.to_s)) do |json|
63
- return false if json.type =~ /error/
78
+ local_version = Version.new(version)
79
+ remote_version = nil
64
80
 
65
- remote_package = json.results
66
-
67
- local_version = VersionNumber.new(version)
68
- remote_version = VersionNumber.new(remote_package.Version)
69
-
70
- local_version < remote_version
81
+ parse_json Aurb.aur_path(:info, package.to_s) do |json|
82
+ return if json.type =~ /error/
83
+ remote_version = Version.new(json.results.Version)
71
84
  end
85
+
86
+ remote_version && local_version < remote_version
72
87
  end
73
88
 
74
89
  # Returns an array containing a hash of search results
@@ -79,7 +94,7 @@ module Aurb
79
94
 
80
95
  ids = json.results.map(&:ID)
81
96
  ids.inject([]) do |ary, id|
82
- parse_json(Aurb.aur_path(:info, id)) do |json|
97
+ parse_json Aurb.aur_path(:info, id) do |json|
83
98
  next if json.type =~ /error/
84
99
  result = json.results.symbolize_keys
85
100
  ary << result unless in_community?(result.Name)
@@ -1,10 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
- #
4
- #--
5
- # Copyright protects this work.
6
- # See LICENSE file for details.
7
- #++
8
3
 
9
4
  require 'thor'
10
5
  require File.expand_path(File.dirname(__FILE__) + '/../aurb')
@@ -30,7 +25,7 @@ module Aurb
30
25
  opts = options.dup
31
26
  path = opts[:path][0] == '/' ? opts[:path] : File.join(Dir.pwd, opts[:path])
32
27
  if File.exist?(path)
33
- opts[:path] = File.expand_path(path)
28
+ path = File.expand_path(path)
34
29
  else
35
30
  raise AurbDownloadError, "'#{path}' is not a valid path"
36
31
  end
@@ -40,9 +35,9 @@ module Aurb
40
35
  total = pkgs.size
41
36
  local = package.split('/')[-1]
42
37
 
43
- Dir.chdir(opts[:path]) do
44
- open(package) do |remote|
45
- File.open(local, 'wb') do |local|
38
+ Dir.chdir path do
39
+ open package do |remote|
40
+ File.open local, 'wb' do |local|
46
41
  local.write remote.read
47
42
  end
48
43
  end
@@ -1,44 +1,58 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
2
 
3
3
  class AurTest < Test::Unit::TestCase
4
- context 'Aurb::Aur #' do
5
- setup do
6
- @aur = Aurb.aur
4
+ context 'Aurb::Aur ::' do
5
+ context 'Version' do
6
+ should 'be able to compare versions and return the newest' do
7
+ versions = [
8
+ {:old => '1', :new => '2' },
9
+ {:old => '1-3', :new => '2-1' },
10
+ {:old => '1.0.0-2', :new => '2.0.0-3'},
11
+ {:old => '1.0.pre', :new => '1.0.1' }
12
+ ]
13
+
14
+ versions.each do |version|
15
+ assert Aurb::Aur::Version.new(version[:old]) < Aurb::Aur::Version.new(version[:new])
16
+ end
17
+ end
7
18
  end
19
+ end
8
20
 
21
+ context 'Aurb::Aur #' do
9
22
  context 'upgrade' do
10
23
  setup do
11
- @list = ['aurb 0.0.0.0',
12
- 'aurb 9.9.9.9']
24
+ @list = ['aurb 0.0.0-0',
25
+ 'aurb 9.9.9-9']
13
26
  end
14
27
 
15
28
  should 'return an array' do
16
- assert @aur.upgrade(@list).is_a?(Array)
29
+ assert Aurb.aur.upgrade(@list).is_a?(Array)
17
30
  end
18
31
 
19
32
  should 'contain only upgradable packages' do
20
- assert_not_equal [:aurb, :aurb], @aur.upgrade(@list)
21
- assert_equal [:aurb], @aur.upgrade(@list)
33
+ assert_not_equal [:aurb, :aurb], Aurb.aur.upgrade(@list)
34
+ assert_equal [:aurb], Aurb.aur.upgrade(@list)
22
35
  end
23
36
  end
24
37
 
25
38
  context 'download' do
26
39
  setup do
27
- @package_working = ['awesome-git']
28
- @package_faulty = ['awesome']
40
+ @package_working = ['aurb']
41
+ @package_faulty = ['foobarbaz']
29
42
  end
30
43
 
31
44
  should 'return an array' do
32
- assert @aur.download(@package_working).is_a?(Array)
33
- assert @aur.download(@package_faulty).is_a?(Array)
45
+ assert Aurb.aur.download(@package_working).is_a?(Array)
46
+ assert Aurb.aur.download(@package_faulty).is_a?(Array)
34
47
  end
35
48
 
36
49
  should 'return download links' do
37
- assert_equal [Aurb.aur_download_path(@package_working.join)], @aur.download(@package_working)
50
+ assert_equal [Aurb.aur_download_path(@package_working.join)], Aurb.aur.download(@package_working)
38
51
  end
39
52
 
40
53
  should 'filter out non-existant packages' do
41
- assert_equal [], @aur.download(@package_faulty)
54
+ assert Aurb.aur.download(@package_faulty).blank?
55
+ assert_equal [], Aurb.aur.download(@package_faulty)
42
56
  end
43
57
  end
44
58
 
@@ -49,16 +63,17 @@ class AurTest < Test::Unit::TestCase
49
63
  end
50
64
 
51
65
  should 'return an array of results' do
52
- assert @aur.search(@package_working).is_a?(Array)
66
+ assert Aurb.aur.search(@package_working).is_a?(Array)
53
67
  end
54
68
 
55
69
  should 'filter out non-existant packages' do
56
- assert_equal [], @aur.search(@package_faulty)
70
+ assert Aurb.aur.search(@package_faulty).blank?
71
+ assert_equal [], Aurb.aur.search(@package_faulty)
57
72
  end
58
73
 
59
74
  context 'result' do
60
75
  setup do
61
- @result = @aur.search(@package_working).first
76
+ @result = Aurb.aur.search(@package_working).first
62
77
  end
63
78
 
64
79
  should 'return an array containing hashes' do
@@ -12,13 +12,13 @@ class SupportTest < Test::Unit::TestCase
12
12
  context 'Hash' do
13
13
  setup do
14
14
  @hash_str = {'hello' => 'world'}
15
- @hash_sym = {:hello => 'world'}
15
+ @hash_sym = {:hello => 'world'}
16
16
  end
17
17
 
18
18
  should 'be able to symbolize keys' do
19
19
  assert_equal @hash_sym, @hash_str.symbolize_keys
20
- symbolized = @hash_str.symbolize_keys!
21
- assert_equal @hash_sym, symbolized
20
+ @hash_str.symbolize_keys!
21
+ assert_equal @hash_sym, @hash_str
22
22
  end
23
23
 
24
24
  should 'provide methods for its keys through method_missing' do
@@ -33,6 +33,7 @@ class SupportTest < Test::Unit::TestCase
33
33
  end
34
34
 
35
35
  should 'be able to colorize itself through the ansi library' do
36
+ assert @str.colorize(:blue)
36
37
  assert_equal "\e[34mfoo\e[0m", @str.colorize(:blue)
37
38
  end
38
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.1
4
+ version: 1.1.2
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-08 00:00:00 +01:00
12
+ date: 2010-02-09 00:00:00 +01:00
13
13
  default_executable: aurb
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -52,16 +52,6 @@ dependencies:
52
52
  - !ruby/object:Gem::Version
53
53
  version: "0"
54
54
  version:
55
- - !ruby/object:Gem::Dependency
56
- name: facets
57
- type: :runtime
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: "0"
64
- version:
65
55
  - !ruby/object:Gem::Dependency
66
56
  name: shoulda
67
57
  type: :development