puppet_metadata 4.6.0 → 5.0.0

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
2
  SHA256:
3
- metadata.gz: 0c6b227acc94c9c68da32eed52aebd0bf2c3e7c47fe604d377f1e2389df0a68c
4
- data.tar.gz: cf77d1e5835cce701514e32ef2cf04295949262426b067fd632f74f5c7347214
3
+ metadata.gz: 9c64a608ea05e55de8fd0497587009102dbaa9c422a5f91e0b4942f0e5ea6fe9
4
+ data.tar.gz: 2775892df0cdbc8dd88ee5f95d2ac2cb31ec6d992341f45a50fed8214ae661b6
5
5
  SHA512:
6
- metadata.gz: f0554c4a17dc0fc9c99cc41d4c5e224cb86c28d68f81c9e6cc8ffeeb576ee6a371b7f5a69016e1f0c16985f00461a4f90844f928cfeb107480e2045f7e577e9e
7
- data.tar.gz: 5534c09575ba2b2cf2e6c6efffed2f27676138dbc59f4d785e7dfe041ef2463e2b8983b0b3e35ae43c4969cde252ab02d838aec7ac40d557586c9ca7149d7143
6
+ metadata.gz: 425dd0d57a1742d73c2ffdabfd88749948c4534f3d2267decff11e4dc5fda1acf66b8ffe8a63bd4f9a5286592e8b396ccb510f1398c9ff2cbd5f34a5381c41f4
7
+ data.tar.gz: 7aa0d2a21b5384d736cadc0ed9b6ae5cafeff7c5c7a6bacba5b13b075d9f2b8a0ee6d3e579b5800bae6f32d4331c9921adfca9b5f8d746376cb073e06db27865
@@ -12,21 +12,11 @@ module PuppetMetadata
12
12
  BUILDS = {
13
13
  # RPM-based
14
14
  'RedHat' => {
15
- '5' => 5..7,
16
- '6' => 5..7,
17
- '7' => 5..8,
18
- '8' => 5..8,
19
- '9' => 6..8,
15
+ '7' => 7..8,
16
+ '8' => 7..8,
17
+ '9' => 7..8,
20
18
  },
21
19
  'Fedora' => {
22
- '26' => [5],
23
- '27' => 5..6,
24
- '28' => 5..6,
25
- '29' => 5..6,
26
- '30' => 5..7,
27
- '31' => 5..7,
28
- '32' => 6..7,
29
- '34' => 6..7,
30
20
  '36' => 7..8,
31
21
  '40' => 7..8,
32
22
  },
@@ -37,31 +27,23 @@ module PuppetMetadata
37
27
  },
38
28
  # deb-based
39
29
  'Debian' => {
40
- '7' => [5],
41
- '8' => 5..6,
42
- '9' => 5..7,
43
- '10' => 5..8,
44
- '11' => 6..8,
30
+ '11' => 7..8,
45
31
  '12' => 7..8,
46
32
  },
47
33
  'Ubuntu' => {
48
- '14.04' => 5..6,
49
- '16.04' => 5..7,
50
- '18.04' => 5..8,
51
- '20.04' => 6..8,
52
- '22.04' => 6..8,
34
+ '20.04' => 7..8,
35
+ '22.04' => 7..8,
53
36
  '24.04' => 7..8,
54
37
  },
55
38
  }.freeze
56
39
 
57
40
  PUPPET_RUBY_VERSIONS = {
58
- 4 => '2.1',
59
- 5 => '2.4',
60
- 6 => '2.5',
61
41
  7 => '2.7',
62
42
  8 => '3.2',
63
43
  }.freeze
64
44
 
45
+ OPENVOX_RUBY_VERSIONS = PUPPET_RUBY_VERSIONS
46
+
65
47
  class << self
66
48
  def find_base_os(os)
67
49
  COMPATIBLE.fetch(os, os)
@@ -16,7 +16,6 @@ module PuppetMetadata
16
16
  # @return [Hash[Symbol, Any]] The outputs for Github Actions
17
17
  def outputs(at = nil)
18
18
  {
19
- puppet_major_versions: puppet_major_versions,
20
19
  puppet_unit_test_matrix: puppet_unit_test_matrix,
21
20
  puppet_beaker_test_matrix: puppet_beaker_test_matrix(at),
22
21
  }
@@ -24,23 +23,29 @@ module PuppetMetadata
24
23
 
25
24
  private
26
25
 
27
- def puppet_major_versions
28
- metadata.puppet_major_versions.sort.reverse.map do |version|
29
- next if puppet_version_below_minimum?(version)
26
+ def beaker_major_versions
27
+ metadata.requirements_with_major_versions.flat_map do |requirement, versions|
28
+ versions.sort.reverse.filter_map do |version|
29
+ next if requirement_name_version_below_minimum?(version)
30
30
 
31
- {
32
- name: "Puppet #{version}",
33
- value: version,
34
- collection: "puppet#{version}",
35
- }
36
- end.compact
31
+ label = (requirement == 'openvox') ? 'OpenVox' : requirement.capitalize
32
+
33
+ {
34
+ name: "#{label} #{version}",
35
+ value: version,
36
+ collection: "#{requirement}#{version}",
37
+ requirement: requirement,
38
+ }
39
+ end
40
+ end
37
41
  end
38
42
 
39
43
  def puppet_unit_test_matrix
40
- metadata.puppet_major_versions.sort.reverse.map do |puppet|
44
+ majors = metadata.requirements_with_major_versions.first[1]
45
+ majors.sort.reverse.map do |puppet|
41
46
  ruby = PuppetMetadata::AIO::PUPPET_RUBY_VERSIONS[puppet]
42
47
  next unless ruby
43
- next if puppet_version_below_minimum?(puppet)
48
+ next if requirement_name_version_below_minimum?(puppet)
44
49
 
45
50
  {
46
51
  puppet: puppet,
@@ -50,17 +55,17 @@ module PuppetMetadata
50
55
  end
51
56
 
52
57
  def beaker_os_releases(at = nil)
53
- majors = puppet_major_versions
54
-
58
+ majors = beaker_major_versions
55
59
  distro_puppet_version = {
56
60
  name: 'Distro Puppet',
57
61
  value: nil, # We don't know the version and since it's rolling, it can be anything
58
62
  collection: 'none',
63
+ requirement: 'puppet',
59
64
  }
60
-
61
65
  metadata.operatingsystems.each do |os, releases|
62
66
  case os
63
67
  when 'Archlinux', 'Gentoo'
68
+ # both currently only ship puppet, not openvox yet
64
69
  yield [os, 'rolling', distro_puppet_version]
65
70
  else
66
71
  releases&.each do |release|
@@ -80,6 +85,7 @@ module PuppetMetadata
80
85
  majors.each do |puppet_version|
81
86
  if AIO.has_aio_build?(os, release, puppet_version[:value])
82
87
  yield [os, release, puppet_version]
88
+ # TODO: also match requirement here
83
89
  elsif PuppetMetadata::OperatingSystem.os_release_puppet_version(os, release) == puppet_version[:value]
84
90
  yield [os, release, distro_puppet_version.merge(value: puppet_version[:value])]
85
91
  end
@@ -92,15 +98,15 @@ module PuppetMetadata
92
98
  def puppet_beaker_test_matrix(at)
93
99
  matrix_include = []
94
100
 
95
- beaker_os_releases(at) do |os, release, puppet_version|
96
- next if puppet_version_below_minimum?(puppet_version[:value])
101
+ beaker_os_releases(at) do |os, release, implementation|
102
+ next if requirement_name_version_below_minimum?(implementation[:value])
97
103
 
98
- setfile = os_release_to_beaker_setfile(os, release, puppet_version[:collection])
104
+ setfile = os_release_to_beaker_setfile(os, release, implementation[:collection])
99
105
  next unless setfile
100
106
 
101
- name = "#{puppet_version[:name]} - #{setfile[1]}"
107
+ name = "#{implementation[:name]} - #{setfile[1]}"
102
108
  env = {
103
- 'BEAKER_PUPPET_COLLECTION' => puppet_version[:collection],
109
+ 'BEAKER_PUPPET_COLLECTION' => implementation[:collection],
104
110
  'BEAKER_SETFILE' => setfile[0],
105
111
  }
106
112
 
@@ -123,7 +129,7 @@ module PuppetMetadata
123
129
  matrix_include
124
130
  end
125
131
 
126
- def puppet_version_below_minimum?(version)
132
+ def requirement_name_version_below_minimum?(version)
127
133
  return false unless version && options[:minimum_major_puppet_version]
128
134
 
129
135
  Gem::Version.new(version) < Gem::Version.new(options[:minimum_major_puppet_version])
@@ -20,6 +20,8 @@ module PuppetMetadata
20
20
 
21
21
  # An abstraction over Puppet metadata
22
22
  class Metadata
23
+ SUPPORTED_REQUIREMENTS = ['openvox', 'puppet'].freeze
24
+
23
25
  attr_reader :metadata
24
26
 
25
27
  # @param [Hash[String, Any]] metadata
@@ -137,21 +139,27 @@ module PuppetMetadata
137
139
  matches?(requirements[name], version)
138
140
  end
139
141
 
142
+ def requirements_with_major_versions
143
+ SUPPORTED_REQUIREMENTS.filter_map do |requirement|
144
+ majors = major_versions(requirement)
145
+ [requirement, majors] unless majors.empty?
146
+ end.to_h
147
+ end
148
+
140
149
  # @return [Array[Integer]] Supported major Puppet versions
141
150
  # @see #requirements
142
- def puppet_major_versions
143
- requirement = requirements['puppet']
144
- raise Exception, 'No Puppet requirement found' unless requirement
151
+ def major_versions(requirement_name)
152
+ requirement = requirements[requirement_name]
153
+ return [] unless requirement
145
154
 
146
- # Current latest major is 7. It is highly recommended that modules
147
- # actually specify exact bounds, but this prevents an infinite loop.
148
- end_major = (requirement.end == SemanticPuppet::Version::MAX) ? 7 : requirement.end.major
155
+ major_version_for_requirement(requirement)
156
+ end
149
157
 
150
- (requirement.begin.major..end_major).select do |major|
151
- requirement.include?(SemanticPuppet::Version.new(major, 0,
152
- 0)) || requirement.include?(SemanticPuppet::Version.new(major,
153
- 99, 99))
154
- end
158
+ def major_versions!(requirement_name)
159
+ requirement = requirements[requirement_name]
160
+ raise Exception, "No '#{requirement_name}' requirement found'" unless requirement
161
+
162
+ major_version_for_requirement(requirement)
155
163
  end
156
164
 
157
165
  # A hash representation of the dependencies
@@ -194,6 +202,16 @@ module PuppetMetadata
194
202
 
195
203
  private
196
204
 
205
+ def major_version_for_requirement(requirement)
206
+ # Current latest major is 8. It is highly recommended that modules
207
+ # actually specify exact bounds, but this prevents an infinite loop.
208
+ end_major = (requirement.end == SemanticPuppet::Version::MAX) ? 8 : requirement.end.major
209
+
210
+ (requirement.begin.major..end_major).select do |major|
211
+ requirement.include?(SemanticPuppet::Version.new(major, 0, 0)) || requirement.include?(SemanticPuppet::Version.new(major, 99, 99))
212
+ end
213
+ end
214
+
197
215
  def build_version_requirement_hash(array)
198
216
  return {} if array.nil?
199
217
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet_metadata
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.6.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vox Pupuli
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-01-24 00:00:00.000000000 Z
12
+ date: 2025-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: metadata-json-lint