arr-pm 0.0.4 → 0.0.5
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.
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
|