repomd_parser 0.1.0 → 0.1.5

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
- 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