arr-pm 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of arr-pm might be problematic. Click here for more details.
- data/arr-pm.gemspec +1 -1
- data/lib/arr-pm.rb +4 -0
- data/lib/arr-pm/file.rb +54 -11
- metadata +10 -5
data/arr-pm.gemspec
CHANGED
@@ -2,7 +2,7 @@ Gem::Specification.new do |spec|
|
|
2
2
|
files = %x{git ls-files}.split("\n")
|
3
3
|
|
4
4
|
spec.name = "arr-pm"
|
5
|
-
spec.version = "0.0.
|
5
|
+
spec.version = "0.0.5"
|
6
6
|
spec.summary = "RPM reader and writer library"
|
7
7
|
spec.description = "This library allows to you to read and write rpm " \
|
8
8
|
"packages. Written in pure ruby because librpm is not available " \
|
data/lib/arr-pm.rb
CHANGED
data/lib/arr-pm/file.rb
CHANGED
@@ -19,7 +19,6 @@ class RPM::File
|
|
19
19
|
file = File.new(file, "r")
|
20
20
|
end
|
21
21
|
@file = file
|
22
|
-
|
23
22
|
end # def initialize
|
24
23
|
|
25
24
|
# Return the lead for this rpm
|
@@ -116,20 +115,64 @@ class RPM::File
|
|
116
115
|
extractor.close
|
117
116
|
end # def extract
|
118
117
|
|
119
|
-
def
|
120
|
-
tags
|
121
|
-
|
122
|
-
tags
|
118
|
+
def tags
|
119
|
+
if @tags.nil?
|
120
|
+
@tags = {}
|
121
|
+
header.tags.each do |tag|
|
122
|
+
tags[tag.tag] = tag.value
|
123
|
+
end
|
123
124
|
end
|
125
|
+
@tags
|
126
|
+
end # def taghash
|
124
127
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
128
|
+
# Get all relations of a given type to this package.
|
129
|
+
#
|
130
|
+
# Examples:
|
131
|
+
#
|
132
|
+
# rpm.relation(:require)
|
133
|
+
# rpm.relation(:conflict)
|
134
|
+
# rpm.relation(:provide)
|
135
|
+
#
|
136
|
+
# In the return array-of-arrays, the elements are:
|
137
|
+
# [ name (string), operator (string), version (string) ]
|
138
|
+
#
|
139
|
+
# operator will be ">=", ">", "=", "<", or "<="
|
140
|
+
#
|
141
|
+
# @return Array of [name, operator, version]
|
142
|
+
def relation(type)
|
143
|
+
name = "#{type}name".to_sym
|
144
|
+
flags = "#{type}flags".to_sym
|
145
|
+
version = "#{type}version".to_sym
|
146
|
+
# There is no data if we are missing all 3 tag types (name/flags/version)
|
147
|
+
# FYI: 'tags.keys' is an array, Array#& does set intersection.
|
148
|
+
return [] if (tags.keys & [name, flags, version]).size != 3
|
149
|
+
# Find tags <type>name, <type>flags, and <type>version, and return
|
150
|
+
# an array of "name operator version"
|
151
|
+
return tags[name].zip(tags[flags], tags[version]) \
|
152
|
+
.reduce([]) { |memo, (n,o,v)| memo << [n, operator(o), v] }
|
153
|
+
end # def relation
|
154
|
+
|
155
|
+
# Get an array of requires defined in this package.
|
156
|
+
#
|
157
|
+
# @return Array of [ [name, operator, version], ... ]
|
158
|
+
def requires
|
159
|
+
return relation(:require)
|
131
160
|
end # def requires
|
132
161
|
|
162
|
+
# Get an array of conflicts defined in this package.
|
163
|
+
#
|
164
|
+
# @return Array of [ [name, operator, version], ... ]
|
165
|
+
def conflicts
|
166
|
+
return relation(:conflicts)
|
167
|
+
end # def conflicts
|
168
|
+
|
169
|
+
# Get an array of provides defined in this package.
|
170
|
+
#
|
171
|
+
# @return Array of [ [name, operator, version], ... ]
|
172
|
+
def provides
|
173
|
+
return provides(:provides)
|
174
|
+
end # def provides
|
175
|
+
|
133
176
|
def operator(flag)
|
134
177
|
have = lambda do |mask|
|
135
178
|
return (flag & mask) == mask
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arr-pm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-03-
|
12
|
+
date: 2012-03-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cabin
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>'
|
@@ -21,7 +21,12 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>'
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
description: This library allows to you to read and write rpm packages. Written in
|
26
31
|
pure ruby because librpm is not available on all systems
|
27
32
|
email:
|
@@ -73,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
78
|
version: '0'
|
74
79
|
requirements: []
|
75
80
|
rubyforge_project:
|
76
|
-
rubygems_version: 1.8.
|
81
|
+
rubygems_version: 1.8.18
|
77
82
|
signing_key:
|
78
83
|
specification_version: 3
|
79
84
|
summary: RPM reader and writer library
|