apt-pkg 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bf4ed45aa8d76fac8568ae2cf5de1fab078edeff
4
- data.tar.gz: 0c9db355335cbba15f7bb38b075c7df54005c418
3
+ metadata.gz: 87712bb513a4494dcf32cccd94507c3f06384fd1
4
+ data.tar.gz: 1abb0ebc3f50bdac8f80a4857e8e59e9195a5fd4
5
5
  SHA512:
6
- metadata.gz: 9da1d1ddf75a69b86f588b632e4a180ffd82715de67d2559f9c4d6dfc76f7b702cbf2bff9e897cfd7ebf71544e21a4b996ab21b7b150c5c8cc145cdaefc0e747
7
- data.tar.gz: ffeaf3e067fee5d83632c9b47766b090608b99026e4ea4fb63dc826ba29142e8dfd54db6000fe0270866e91cc9cf8f1ddedb297fe39553b6f4d2a14f589254ab
6
+ metadata.gz: 381f94c894465eb5cb7046095d9e652ae64b098920a7f7156f91c8463fe1a491ff794671e2cc7947e32d6d92945dcb9326edec4ce8d3b6826488e32bf3ae64d4
7
+ data.tar.gz: fc8c34e7891e54259fac2770ceb43a737ae3d24f7171807da8e10504b782f3a084b59f8bbfe85e3f97e08894ad76e26c79512cdeb6f9f3a36bc4d5245690887c
data/README.md CHANGED
@@ -4,13 +4,30 @@
4
4
 
5
5
  ~~~ console
6
6
  aptitude install libapt-pkg-dev ruby2.0-dev
7
- gem install bundler
8
- bundle install
7
+ gem install apt-pkg
8
+ ~~~
9
+
10
+ ## USING
11
+
12
+ ~~~ ruby
13
+ require 'apt_pkg'
14
+
15
+ Debian::AptPkg.check_dep('1', '<', '2') # => true
16
+ Debian::AptPkg.check_dep('1', Debian::AptPkg::NOT_EQUALS, '2') # => true
17
+ Debian::AptPkg.check_domain_list("alioth.debian.org", "debian.net,debian.org") # => true
18
+ Debian::AptPkg.cmp_version('1.1', '1.0') # => 1
19
+ Debian::AptPkg.size_to_str(10000) # => '10.0 k'
20
+ Debian::AptPkg.string_to_bool('yes') # => 1
21
+ Debian::AptPkg.time_to_str(3601) # => '1h 0min 1s'
22
+ Debian::AptPkg.upstream_version('3.4.15-1+b1') # => '3.4.15'
23
+ Debian::AptPkg.uri_to_filename('http://debian.org/index.html') # => 'debian.org_index.html'
9
24
  ~~~
10
25
 
11
26
  ## BUILD
12
27
 
13
28
  ~~~ console
29
+ gem install bundler
30
+ bundle install
14
31
  bundle exec rake compile
15
32
  ~~~
16
33
 
data/apt-pkg.gemspec CHANGED
@@ -1,16 +1,14 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "apt-pkg"
3
- s.version = '0.0.1'
3
+ s.version = '0.0.2'
4
4
 
5
5
  s.authors = ["Laurent Arnoud"]
6
6
  s.description = %q{Ruby interface to apt-pkg}
7
- s.summary = s.description
7
+ s.summary = %q{Ruby interface to libapt-pkg}
8
8
  s.email = %q{laurent@spkdev.net}
9
9
  s.license = "MIT"
10
10
  s.extensions = ["ext/apt_pkg/extconf.rb"]
11
- s.extra_rdoc_files = [
12
- "README.md"
13
- ]
11
+ s.extra_rdoc_files = Dir['*.md', 'ext/**/*.cpp']
14
12
  s.files = `git ls-files`.split($\)
15
13
  s.homepage = %q{http://github.com/spk/ruby-apt-pkg}
16
14
  s.rdoc_options = ["--charset=UTF-8"]
@@ -1,4 +1,5 @@
1
1
  #include <ruby.h>
2
+ #include <apt-pkg/deblistparser.h>
2
3
  #include <apt-pkg/debversion.h>
3
4
  #include <apt-pkg/pkgcache.h>
4
5
  #include <apt-pkg/strutl.h>
@@ -12,14 +13,15 @@ using namespace std;
12
13
  /* function prototypes */
13
14
  extern "C" void Init_apt_pkg();
14
15
  /* String functions */
15
- static VALUE cmp_version(VALUE self, VALUE pkg_version_a, VALUE pkg_version_b);
16
- static VALUE check_dep(VALUE self, VALUE pkg_version_a, VALUE op, VALUE pkg_version_b);
17
16
  static VALUE uri_to_filename(VALUE self, VALUE uri);
18
- static VALUE upstream_version(VALUE self, VALUE ver);
19
17
  static VALUE time_to_str(VALUE self, VALUE secondes);
20
18
  static VALUE size_to_str(VALUE self, VALUE size);
21
19
  static VALUE string_to_bool(VALUE self, VALUE text);
22
20
  static VALUE check_domain_list(VALUE self, VALUE host, VALUE list);
21
+ /* Versioning */
22
+ static VALUE cmp_version(VALUE self, VALUE pkg_version_a, VALUE pkg_version_b);
23
+ static VALUE check_dep(VALUE self, VALUE pkg_version_a, VALUE cmp_type, VALUE pkg_version_b);
24
+ static VALUE upstream_version(VALUE self, VALUE ver);
23
25
 
24
26
  /*
25
27
  * call-seq: cmp_version(pkg_version_a, pkg_version_b) -> int
@@ -48,15 +50,29 @@ VALUE cmp_version(VALUE self, VALUE pkg_version_a, VALUE pkg_version_b) {
48
50
  * Params:
49
51
  *
50
52
  * +pkg_version_a+:: Version to compare from.
51
- * +op+:: See operators const.
53
+ * +op+:: See operators const or string (<, >, <=, >=, =)
52
54
  * +pkg_version_b+:: Version to compare to.
53
55
  *
54
- * Debian::AptPkg.check_dep('1', Debian::AptPkg::LESS_EQ, '2') # => true
56
+ * Debian::AptPkg.check_dep('1', '<', '2') # => true
57
+ * Debian::AptPkg.check_dep('1', Debian::AptPkg::NOT_EQUALS, '2') # => true
55
58
  *
56
59
  **/
57
60
  static
58
- VALUE check_dep(VALUE self, VALUE pkg_version_a, VALUE op, VALUE pkg_version_b) {
59
- int res = debVS.CheckDep(StringValuePtr(pkg_version_a), NUM2INT(op), StringValuePtr(pkg_version_b));
61
+ VALUE check_dep(VALUE self, VALUE pkg_version_a, VALUE cmp_type, VALUE pkg_version_b) {
62
+ unsigned int op = 0;
63
+ if (TYPE(cmp_type) == T_FIXNUM) {
64
+ op = NUM2INT(cmp_type);
65
+ } else {
66
+ const char *op_str = StringValuePtr(cmp_type);
67
+ if (strcmp(op_str, ">") == 0) op_str = ">>";
68
+ if (strcmp(op_str, "<") == 0) op_str = "<<";
69
+ if (*debListParser::ConvertRelation(op_str, op) != 0)
70
+ {
71
+ rb_raise(rb_eArgError, "Bad comparison operation");
72
+ return 0;
73
+ }
74
+ }
75
+ int res = debVS.CheckDep(StringValuePtr(pkg_version_a), op, StringValuePtr(pkg_version_b));
60
76
  return INT2BOOL(res);
61
77
  }
62
78
 
data/test/apt_pkg_test.rb CHANGED
@@ -14,37 +14,37 @@ describe Debian::AptPkg do
14
14
  describe 'Debian::AptPkg.check_dep' do
15
15
  describe 'LessEq' do
16
16
  it 'should compare Debian version' do
17
- Debian::AptPkg.check_dep('1', Debian::AptPkg::LESS_EQ, '2').must_equal true
18
- Debian::AptPkg.check_dep('2', Debian::AptPkg::LESS_EQ, '1').must_equal false
19
- Debian::AptPkg.check_dep('1', Debian::AptPkg::LESS_EQ, '1').must_equal true
17
+ Debian::AptPkg.check_dep('1', '<=', '2').must_equal true
18
+ Debian::AptPkg.check_dep('2', '<=', '1').must_equal false
19
+ Debian::AptPkg.check_dep('1', '<=', '1').must_equal true
20
20
  end
21
21
  end
22
22
  describe 'GreaterEq' do
23
23
  it 'should compare Debian version' do
24
- Debian::AptPkg.check_dep('1', Debian::AptPkg::GREATER_EQ, '2').must_equal false
25
- Debian::AptPkg.check_dep('2', Debian::AptPkg::GREATER_EQ, '1').must_equal true
26
- Debian::AptPkg.check_dep('1', Debian::AptPkg::GREATER_EQ, '1').must_equal true
24
+ Debian::AptPkg.check_dep('1', '>=', '2').must_equal false
25
+ Debian::AptPkg.check_dep('2', '>=', '1').must_equal true
26
+ Debian::AptPkg.check_dep('1', '>=', '1').must_equal true
27
27
  end
28
28
  end
29
29
  describe 'Less' do
30
30
  it 'should compare Debian version' do
31
- Debian::AptPkg.check_dep('1', Debian::AptPkg::LESS, '2').must_equal true
32
- Debian::AptPkg.check_dep('2', Debian::AptPkg::LESS, '1').must_equal false
33
- Debian::AptPkg.check_dep('1', Debian::AptPkg::LESS, '1').must_equal false
31
+ Debian::AptPkg.check_dep('1', '<', '2').must_equal true
32
+ Debian::AptPkg.check_dep('2', '<', '1').must_equal false
33
+ Debian::AptPkg.check_dep('1', '<', '1').must_equal false
34
34
  end
35
35
  end
36
36
  describe 'Greater' do
37
37
  it 'should compare Debian version' do
38
- Debian::AptPkg.check_dep('1', Debian::AptPkg::GREATER, '2').must_equal false
39
- Debian::AptPkg.check_dep('2', Debian::AptPkg::GREATER, '1').must_equal true
40
- Debian::AptPkg.check_dep('1', Debian::AptPkg::GREATER, '1').must_equal false
38
+ Debian::AptPkg.check_dep('1', '>', '2').must_equal false
39
+ Debian::AptPkg.check_dep('2', '>', '1').must_equal true
40
+ Debian::AptPkg.check_dep('1', '>', '1').must_equal false
41
41
  end
42
42
  end
43
43
  describe 'Equals' do
44
44
  it 'should compare Debian version' do
45
- Debian::AptPkg.check_dep('1', Debian::AptPkg::EQUALS, '2').must_equal false
46
- Debian::AptPkg.check_dep('2', Debian::AptPkg::EQUALS, '1').must_equal false
47
- Debian::AptPkg.check_dep('1', Debian::AptPkg::EQUALS, '1').must_equal true
45
+ Debian::AptPkg.check_dep('1', '=', '2').must_equal false
46
+ Debian::AptPkg.check_dep('2', '=', '1').must_equal false
47
+ Debian::AptPkg.check_dep('1', '=', '1').must_equal true
48
48
  end
49
49
  end
50
50
  describe 'NotEquals' do
@@ -54,6 +54,11 @@ describe Debian::AptPkg do
54
54
  Debian::AptPkg.check_dep('1', Debian::AptPkg::NOT_EQUALS, '1').must_equal false
55
55
  end
56
56
  end
57
+ describe 'Errors' do
58
+ it 'should raise argument error with bad comparison' do
59
+ lambda { Debian::AptPkg.check_dep('1', 'bad', '2') }.must_raise ArgumentError
60
+ end
61
+ end
57
62
  end
58
63
 
59
64
  describe 'Debian::AptPkg.uri_to_filename' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apt-pkg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent Arnoud
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-07 00:00:00.000000000 Z
11
+ date: 2014-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -73,6 +73,7 @@ extensions:
73
73
  - ext/apt_pkg/extconf.rb
74
74
  extra_rdoc_files:
75
75
  - README.md
76
+ - ext/apt_pkg/apt-pkg.cpp
76
77
  files:
77
78
  - .gitignore
78
79
  - Gemfile
@@ -108,5 +109,5 @@ rubyforge_project:
108
109
  rubygems_version: 2.0.14
109
110
  signing_key:
110
111
  specification_version: 4
111
- summary: Ruby interface to apt-pkg
112
+ summary: Ruby interface to libapt-pkg
112
113
  test_files: []