aurb 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
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