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 +4 -4
- data/lib/puppet_metadata/aio.rb +8 -26
- data/lib/puppet_metadata/github_actions.rb +27 -21
- data/lib/puppet_metadata/metadata.rb +29 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c64a608ea05e55de8fd0497587009102dbaa9c422a5f91e0b4942f0e5ea6fe9
|
4
|
+
data.tar.gz: 2775892df0cdbc8dd88ee5f95d2ac2cb31ec6d992341f45a50fed8214ae661b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 425dd0d57a1742d73c2ffdabfd88749948c4534f3d2267decff11e4dc5fda1acf66b8ffe8a63bd4f9a5286592e8b396ccb510f1398c9ff2cbd5f34a5381c41f4
|
7
|
+
data.tar.gz: 7aa0d2a21b5384d736cadc0ed9b6ae5cafeff7c5c7a6bacba5b13b075d9f2b8a0ee6d3e579b5800bae6f32d4331c9921adfca9b5f8d746376cb073e06db27865
|
data/lib/puppet_metadata/aio.rb
CHANGED
@@ -12,21 +12,11 @@ module PuppetMetadata
|
|
12
12
|
BUILDS = {
|
13
13
|
# RPM-based
|
14
14
|
'RedHat' => {
|
15
|
-
'
|
16
|
-
'
|
17
|
-
'
|
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
|
-
'
|
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
|
-
'
|
49
|
-
'
|
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
|
28
|
-
metadata.
|
29
|
-
|
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
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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.
|
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
|
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 =
|
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,
|
96
|
-
next if
|
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,
|
104
|
+
setfile = os_release_to_beaker_setfile(os, release, implementation[:collection])
|
99
105
|
next unless setfile
|
100
106
|
|
101
|
-
name = "#{
|
107
|
+
name = "#{implementation[:name]} - #{setfile[1]}"
|
102
108
|
env = {
|
103
|
-
'BEAKER_PUPPET_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
|
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
|
143
|
-
requirement = requirements[
|
144
|
-
|
151
|
+
def major_versions(requirement_name)
|
152
|
+
requirement = requirements[requirement_name]
|
153
|
+
return [] unless requirement
|
145
154
|
|
146
|
-
|
147
|
-
|
148
|
-
end_major = (requirement.end == SemanticPuppet::Version::MAX) ? 7 : requirement.end.major
|
155
|
+
major_version_for_requirement(requirement)
|
156
|
+
end
|
149
157
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
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
|
+
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-
|
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
|