repomd_parser 0.1.0 → 0.1.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.
- checksums.yaml +5 -5
- data/README.md +13 -0
- data/lib/repomd_parser/primary_xml_parser.rb +20 -13
- data/lib/repomd_parser/reference.rb +26 -2
- data/lib/repomd_parser/repomd_xml_parser.rb +1 -1
- data/lib/repomd_parser/version.rb +1 -1
- data/repomd_parser.gemspec +4 -4
- metadata +7 -17
- data/.gitignore +0 -12
- data/.rspec +0 -3
- data/.travis.yml +0 -7
- data/Gemfile.lock +0 -47
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7e96fc8459331c46c5a95a479d50c93973db28675e71f37d367300ad921c5995
|
4
|
+
data.tar.gz: 0bc27934593e3e22225850446f537754e0ee7e0f1d190fdb27e51019dffd3771
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10fc061b160790a2bf8a4f440dbbbdcc3cbbfbb9c70fd40616a16be1c7270040695a440eb65ae3a493ac5b6aac791c43002f580782a2a88eb2405ee5d4dce50c
|
7
|
+
data.tar.gz: 5905bf2dfcce585e9ebcadf452dab17ebb17a0dcf0e5d04f010042d982a4b0484204e4b56fdd48e142dc308022d58e028ea3b5076c93af775be6cddda0a648cd
|
data/README.md
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
RPM repository metadata parser.
|
4
4
|
|
5
|
+
For tools that use `RepomdParser`, see [repo-tools](https://github.com/ikapelyukhin/repo-tools) repository.
|
6
|
+
|
5
7
|
This gem can parse `repomd.xml`, `primary.xml` and `deltainfo.xml` metadata files of the RPM repository,
|
6
8
|
providing a way to get access to the list of packages in the repo and the details of each individual package (name, size, checksum, etc.)
|
7
9
|
|
@@ -64,6 +66,17 @@ Represents a file referenced in the metadata file. Has the following accessors:
|
|
64
66
|
* `size` in bytes.
|
65
67
|
* `arch`.
|
66
68
|
|
69
|
+
RPM and DRPM files additionally have the following attributes:
|
70
|
+
|
71
|
+
* `name`.
|
72
|
+
* `version`.
|
73
|
+
* `release`.
|
74
|
+
* `build_time`.
|
75
|
+
|
76
|
+
## Caveats
|
77
|
+
|
78
|
+
* Relies on the file name to determine if the file is compressed (automatically decompresses `.gz` files)
|
79
|
+
|
67
80
|
## Development
|
68
81
|
|
69
82
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -17,9 +17,8 @@
|
|
17
17
|
|
18
18
|
class RepomdParser::PrimaryXmlParser < RepomdParser::BaseParser
|
19
19
|
|
20
|
-
def initialize(filename
|
20
|
+
def initialize(filename)
|
21
21
|
super(filename)
|
22
|
-
@mirror_src = mirror_src
|
23
22
|
end
|
24
23
|
|
25
24
|
def start_element(name, attrs = [])
|
@@ -28,17 +27,20 @@ class RepomdParser::PrimaryXmlParser < RepomdParser::BaseParser
|
|
28
27
|
@package = {}
|
29
28
|
elsif (name == 'version')
|
30
29
|
@package[:version] = get_attribute(attrs, 'ver')
|
30
|
+
@package[:release] = get_attribute(attrs, 'rel')
|
31
31
|
elsif (name == 'location')
|
32
32
|
@package[:location] = get_attribute(attrs, 'href')
|
33
33
|
elsif (name == 'checksum')
|
34
34
|
@package[:checksum_type] = get_attribute(attrs, 'type')
|
35
35
|
elsif (name == 'size')
|
36
36
|
@package[:size] = get_attribute(attrs, 'package').to_i
|
37
|
+
elsif (name == 'time')
|
38
|
+
@package[:build_time] = get_attribute(attrs, 'build')
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
40
42
|
def characters(string)
|
41
|
-
if (%i[name arch checksum].include? @current_node)
|
43
|
+
if (%i[name arch checksum summary description rpm:license].include? @current_node)
|
42
44
|
@package[@current_node] ||= ''
|
43
45
|
@package[@current_node] += string.strip
|
44
46
|
end
|
@@ -46,16 +48,21 @@ class RepomdParser::PrimaryXmlParser < RepomdParser::BaseParser
|
|
46
48
|
|
47
49
|
def end_element(name)
|
48
50
|
if (name == 'package')
|
49
|
-
|
50
|
-
@
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
51
|
+
@referenced_files << RepomdParser::Reference.new(
|
52
|
+
location: @package[:location],
|
53
|
+
checksum_type: @package[:checksum_type],
|
54
|
+
checksum: @package[:checksum],
|
55
|
+
type: :rpm,
|
56
|
+
size: @package[:size].to_i,
|
57
|
+
arch: @package[:arch],
|
58
|
+
version: @package[:version],
|
59
|
+
release: @package[:release],
|
60
|
+
name: @package[:name],
|
61
|
+
summary: @package[:summary],
|
62
|
+
description: @package[:description],
|
63
|
+
license: @package[:"rpm:license"],
|
64
|
+
build_time: Time.at(@package[:build_time].to_i).utc
|
65
|
+
)
|
59
66
|
end
|
60
67
|
end
|
61
68
|
|
@@ -16,9 +16,33 @@
|
|
16
16
|
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
17
17
|
|
18
18
|
class RepomdParser::Reference
|
19
|
-
attr_accessor :location,
|
19
|
+
attr_accessor :location,
|
20
|
+
:checksum_type,
|
21
|
+
:checksum,
|
22
|
+
:type,
|
23
|
+
:size,
|
24
|
+
:arch,
|
25
|
+
:version,
|
26
|
+
:release,
|
27
|
+
:name,
|
28
|
+
:summary,
|
29
|
+
:description,
|
30
|
+
:license,
|
31
|
+
:build_time
|
20
32
|
|
21
|
-
def initialize(location:,
|
33
|
+
def initialize(location:,
|
34
|
+
checksum_type:,
|
35
|
+
checksum:,
|
36
|
+
type:,
|
37
|
+
size:,
|
38
|
+
arch: nil,
|
39
|
+
version: nil,
|
40
|
+
release: nil,
|
41
|
+
name: nil,
|
42
|
+
summary: nil,
|
43
|
+
description: nil,
|
44
|
+
license: nil,
|
45
|
+
build_time: nil)
|
22
46
|
local_variables.each do |local_var|
|
23
47
|
method = "#{local_var}="
|
24
48
|
send(method, binding.local_variable_get(local_var)) if (respond_to?(method))
|
data/repomd_parser.gemspec
CHANGED
@@ -16,16 +16,16 @@ Gem::Specification.new do |spec|
|
|
16
16
|
# Specify which files should be added to the gem when it is released.
|
17
17
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
18
18
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
19
|
-
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }.reject { |f| f.match(%r{^\.}) }
|
20
20
|
end
|
21
21
|
spec.bindir = "exe"
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
|
-
spec.add_development_dependency "bundler", "
|
26
|
-
spec.add_development_dependency "rake", "~>
|
25
|
+
spec.add_development_dependency "bundler", ">= 1.16"
|
26
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
27
27
|
spec.add_development_dependency "rspec", "~> 3.0"
|
28
28
|
spec.add_development_dependency 'simplecov', '~> 0.16.1'
|
29
29
|
|
30
|
-
spec.add_dependency 'nokogiri', '~> 1.8'
|
30
|
+
spec.add_dependency 'nokogiri', '~> 1.8'
|
31
31
|
end
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repomd_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Kapelyukhin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.16'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.16'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -73,9 +73,6 @@ dependencies:
|
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1.8'
|
76
|
-
- - ">="
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 1.8.4
|
79
76
|
type: :runtime
|
80
77
|
prerelease: false
|
81
78
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -83,9 +80,6 @@ dependencies:
|
|
83
80
|
- - "~>"
|
84
81
|
- !ruby/object:Gem::Version
|
85
82
|
version: '1.8'
|
86
|
-
- - ">="
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: 1.8.4
|
89
83
|
description:
|
90
84
|
email:
|
91
85
|
- ikapelyukhin@suse.com
|
@@ -93,12 +87,8 @@ executables: []
|
|
93
87
|
extensions: []
|
94
88
|
extra_rdoc_files: []
|
95
89
|
files:
|
96
|
-
- ".gitignore"
|
97
|
-
- ".rspec"
|
98
|
-
- ".travis.yml"
|
99
90
|
- COPYING.txt
|
100
91
|
- Gemfile
|
101
|
-
- Gemfile.lock
|
102
92
|
- README.md
|
103
93
|
- Rakefile
|
104
94
|
- bin/setup
|
@@ -130,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
120
|
version: '0'
|
131
121
|
requirements: []
|
132
122
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
123
|
+
rubygems_version: 2.7.8
|
134
124
|
signing_key:
|
135
125
|
specification_version: 4
|
136
126
|
summary: RPM repository metadata (RepoMD) parser
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.travis.yml
DELETED
data/Gemfile.lock
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
repomd_parser (0.1.0)
|
5
|
-
nokogiri (~> 1.8, >= 1.8.4)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
diff-lcs (1.3)
|
11
|
-
docile (1.3.1)
|
12
|
-
json (2.1.0)
|
13
|
-
mini_portile2 (2.3.0)
|
14
|
-
nokogiri (1.8.4)
|
15
|
-
mini_portile2 (~> 2.3.0)
|
16
|
-
rake (10.5.0)
|
17
|
-
rspec (3.7.0)
|
18
|
-
rspec-core (~> 3.7.0)
|
19
|
-
rspec-expectations (~> 3.7.0)
|
20
|
-
rspec-mocks (~> 3.7.0)
|
21
|
-
rspec-core (3.7.1)
|
22
|
-
rspec-support (~> 3.7.0)
|
23
|
-
rspec-expectations (3.7.0)
|
24
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
25
|
-
rspec-support (~> 3.7.0)
|
26
|
-
rspec-mocks (3.7.0)
|
27
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
28
|
-
rspec-support (~> 3.7.0)
|
29
|
-
rspec-support (3.7.1)
|
30
|
-
simplecov (0.16.1)
|
31
|
-
docile (~> 1.1)
|
32
|
-
json (>= 1.8, < 3)
|
33
|
-
simplecov-html (~> 0.10.0)
|
34
|
-
simplecov-html (0.10.2)
|
35
|
-
|
36
|
-
PLATFORMS
|
37
|
-
ruby
|
38
|
-
|
39
|
-
DEPENDENCIES
|
40
|
-
bundler (~> 1.16)
|
41
|
-
rake (~> 10.0)
|
42
|
-
repomd_parser!
|
43
|
-
rspec (~> 3.0)
|
44
|
-
simplecov (~> 0.16.1)
|
45
|
-
|
46
|
-
BUNDLED WITH
|
47
|
-
1.16.3
|