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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: da674bc87e06b0e880f92a3b52cdf670ccfb61f7
4
- data.tar.gz: 571588bcefac31e1beeb0fd933d41b0a773eec9a
2
+ SHA256:
3
+ metadata.gz: 7e96fc8459331c46c5a95a479d50c93973db28675e71f37d367300ad921c5995
4
+ data.tar.gz: 0bc27934593e3e22225850446f537754e0ee7e0f1d190fdb27e51019dffd3771
5
5
  SHA512:
6
- metadata.gz: ecad1de83a0ca8b665df735575a8585e8b98c7c29b92e439cdec3e0db9db660b48d56a77f2daa86f3b34e687b9a2b8ee02257c7aeeefdc1c625541d0091a9dc7
7
- data.tar.gz: 2e350d492ce36f0b6587de8f4aba49068fad342def228d8e1e9bd6392b49607668d0f085627af0ca3bac87d5b1f75c53994714f00db4ac68a4bbeb61d5220d87
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, mirror_src = false)
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
- unless (@package[:arch] == 'src' && !@mirror_src)
50
- @referenced_files << RepomdParser::Reference.new(
51
- location: @package[:location],
52
- checksum_type: @package[:checksum_type],
53
- checksum: @package[:checksum],
54
- type: :rpm,
55
- size: @package[:size].to_i,
56
- arch: @package[:arch],
57
- )
58
- end
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, :checksum_type, :checksum, :type, :size, :arch
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:, checksum_type:, checksum:, type:, size:, arch: nil)
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))
@@ -42,7 +42,7 @@ class RepomdParser::RepomdXmlParser
42
42
  checksum_type: hash[:checksum][:type],
43
43
  checksum: hash[:checksum][:value],
44
44
  type: type,
45
- size: hash[:size][:value].to_i
45
+ size: hash[:size] ? hash[:size][:value].to_i : nil
46
46
  )
47
47
  end
48
48
 
@@ -16,5 +16,5 @@
16
16
  # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
17
 
18
18
  module RepomdParser
19
- VERSION = "0.1.0"
19
+ VERSION = '0.1.5'
20
20
  end
@@ -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", "~> 1.16"
26
- spec.add_development_dependency "rake", "~> 10.0"
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', '>= 1.8.4'
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.0
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: 2018-09-20 00:00:00.000000000 Z
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: '10.0'
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: '10.0'
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.6.13
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
@@ -1,12 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
-
10
- # rspec failure tracking
11
- .rspec_status
12
- coverage
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.4.1
7
- before_install: gem install bundler -v 1.16.3
@@ -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