puppet_metadata 3.0.0 → 3.1.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/bin/metadata2gha +8 -10
- data/lib/puppet_metadata/aio.rb +5 -5
- data/lib/puppet_metadata/beaker.rb +2 -2
- data/lib/puppet_metadata/github_actions.rb +11 -6
- data/lib/puppet_metadata/metadata.rb +11 -6
- data/lib/puppet_metadata/operatingsystem.rb +6 -2
- data/lib/puppet_metadata.rb +2 -0
- metadata +22 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ee295ef02bb87ed87b68f0ebe2fea5813fff4e5316a5ffab59dee9bea6bb36f
|
4
|
+
data.tar.gz: 150eb04c272910087f6687f96e6673fd9dd616697b2f6779c87d06935ec83ddb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0aabfd90159725ac7c7029ccede234ec4d5351229293a32de1f37dbf3e34a05293cf07e4f7df79aef84b7c7ea686774f616f39086c18bad588c283bc14fa8d31
|
7
|
+
data.tar.gz: ebd5f32841912550eaab333eacd9259de97ef9c7583591e71ba417f8bc1e191ba25a66325503c05747c3619745b8427f1d932d42f5951e59eecf5383b708c089
|
data/bin/metadata2gha
CHANGED
@@ -9,7 +9,7 @@ options = {
|
|
9
9
|
beaker_use_fqdn: false,
|
10
10
|
beaker_pidfile_workaround: false,
|
11
11
|
domain: nil,
|
12
|
-
minimum_major_puppet_version: nil
|
12
|
+
minimum_major_puppet_version: nil,
|
13
13
|
}
|
14
14
|
|
15
15
|
OptionParser.new do |opts|
|
@@ -26,25 +26,23 @@ OptionParser.new do |opts|
|
|
26
26
|
|
27
27
|
opts.banner = "Usage: #{$0} [options] metadata"
|
28
28
|
|
29
|
-
opts.on(
|
30
|
-
opts.on(
|
31
|
-
opts.on(
|
32
|
-
opts.on(
|
29
|
+
opts.on('--[no-]use-fqdn', 'Generate beaker setfiles with a FQDN') { |opt| options[:beaker_use_fqdn] = opt }
|
30
|
+
opts.on('--pidfile-workaround VALUE', 'Generate the systemd PIDFile workaround to work around a docker bug', PidfileWorkaround) { |opt| options[:beaker_pidfile_workaround] = opt }
|
31
|
+
opts.on('-d', '--domain VALUE', 'the domain for the box, only used when --use-fqdn is set to true') { |opt| options[:domain] = opt }
|
32
|
+
opts.on('--minimum-major-puppet-version VERSION', "Don't create actions for Puppet versions less than this major version") { |opt| options[:minimum_major_puppet_version] = opt }
|
33
33
|
end.parse!
|
34
34
|
|
35
35
|
filename = ARGV[0]
|
36
|
-
if filename.nil? || filename.empty?
|
37
|
-
filename = 'metadata.json'
|
38
|
-
end
|
36
|
+
filename = 'metadata.json' if filename.nil? || filename.empty?
|
39
37
|
|
40
38
|
begin
|
41
39
|
metadata = PuppetMetadata.read(filename)
|
42
40
|
rescue StandardError => e
|
43
|
-
|
41
|
+
warn "Failed to read #{filename}: #{e}"
|
44
42
|
exit 2
|
45
43
|
end
|
46
44
|
|
47
|
-
github_output =
|
45
|
+
github_output = ENV['GITHUB_OUTPUT'].nil? ? $stdout : File.open(ENV.fetch('GITHUB_OUTPUT', nil), 'a')
|
48
46
|
metadata.github_actions(options).outputs.each do |name, value|
|
49
47
|
github_output.write("#{name}=#{value.to_json}\n")
|
50
48
|
end
|
data/lib/puppet_metadata/aio.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
module PuppetMetadata
|
2
2
|
class AIO
|
3
3
|
COMPATIBLE = {
|
4
|
-
'AlmaLinux'
|
5
|
-
'Amazon'
|
6
|
-
'CentOS'
|
4
|
+
'AlmaLinux' => 'RedHat',
|
5
|
+
'Amazon' => 'RedHat',
|
6
|
+
'CentOS' => 'RedHat',
|
7
7
|
'OracleLinux' => 'RedHat',
|
8
|
-
'Rocky'
|
9
|
-
'Scientific'
|
8
|
+
'Rocky' => 'RedHat',
|
9
|
+
'Scientific' => 'RedHat',
|
10
10
|
}.freeze
|
11
11
|
|
12
12
|
BUILDS = {
|
@@ -47,7 +47,7 @@ module PuppetMetadata
|
|
47
47
|
return unless os_supported?(os)
|
48
48
|
|
49
49
|
name = "#{os.downcase}#{release.tr('.', '')}-64"
|
50
|
-
hostname = puppet_version !=
|
50
|
+
hostname = (puppet_version.nil? && puppet_version != 'none') ? name : "#{name}-#{puppet_version}"
|
51
51
|
domain ||= 'example.com' if use_fqdn
|
52
52
|
|
53
53
|
options = {}
|
@@ -71,7 +71,7 @@ module PuppetMetadata
|
|
71
71
|
# Return whether a Beaker setfile can be generated for the given OS
|
72
72
|
# @param [String] os The operating system
|
73
73
|
def os_supported?(os)
|
74
|
-
[
|
74
|
+
%w[Archlinux CentOS Fedora Debian Ubuntu Rocky AlmaLinux].include?(os)
|
75
75
|
end
|
76
76
|
|
77
77
|
private
|
@@ -1,7 +1,6 @@
|
|
1
1
|
module PuppetMetadata
|
2
2
|
class GithubActions
|
3
|
-
attr_reader :metadata
|
4
|
-
attr_reader :options
|
3
|
+
attr_reader :metadata, :options
|
5
4
|
|
6
5
|
# @param [PuppetMetadata::Metadata] metadata
|
7
6
|
# @param [Hash] options
|
@@ -49,14 +48,20 @@ module PuppetMetadata
|
|
49
48
|
def beaker_os_releases
|
50
49
|
majors = puppet_major_versions
|
51
50
|
|
51
|
+
distro_puppet_version = {
|
52
|
+
name: 'Distro Puppet',
|
53
|
+
value: nil, # We don't know the version and since it's rolling, it can be anything
|
54
|
+
collection: 'none',
|
55
|
+
}
|
56
|
+
|
52
57
|
metadata.operatingsystems.each do |os, releases|
|
53
58
|
case os
|
54
59
|
when 'Archlinux', 'Gentoo'
|
55
|
-
yield [os, 'rolling',
|
60
|
+
yield [os, 'rolling', distro_puppet_version]
|
56
61
|
else
|
57
62
|
releases&.each do |release|
|
58
63
|
majors.each do |puppet_version|
|
59
|
-
if AIO.has_aio_build?(os, release, puppet_version[:value])
|
64
|
+
if AIO.has_aio_build?(os, release, puppet_version[:value]) # rubocop:disable Style/IfUnlessModifier
|
60
65
|
yield [os, release, puppet_version]
|
61
66
|
end
|
62
67
|
end
|
@@ -80,7 +85,7 @@ module PuppetMetadata
|
|
80
85
|
name: setfile[1],
|
81
86
|
value: setfile[0],
|
82
87
|
},
|
83
|
-
puppet: puppet_version
|
88
|
+
puppet: puppet_version,
|
84
89
|
}
|
85
90
|
end
|
86
91
|
|
@@ -88,7 +93,7 @@ module PuppetMetadata
|
|
88
93
|
end
|
89
94
|
|
90
95
|
def puppet_version_below_minimum?(version)
|
91
|
-
return false unless options[:minimum_major_puppet_version]
|
96
|
+
return false unless version && options[:minimum_major_puppet_version]
|
92
97
|
|
93
98
|
Gem::Version.new(version) < Gem::Version.new(options[:minimum_major_puppet_version])
|
94
99
|
end
|
@@ -35,7 +35,7 @@ module PuppetMetadata
|
|
35
35
|
if validate
|
36
36
|
require 'metadata_json_lint'
|
37
37
|
schema_errors = MetadataJsonLint::Schema.new.validate(metadata)
|
38
|
-
raise InvalidMetadataException
|
38
|
+
raise InvalidMetadataException, schema_errors if schema_errors.any?
|
39
39
|
end
|
40
40
|
|
41
41
|
@metadata = metadata
|
@@ -67,10 +67,11 @@ module PuppetMetadata
|
|
67
67
|
|
68
68
|
supported = metadata['operatingsystem_support'].map do |os|
|
69
69
|
next unless os['operatingsystem']
|
70
|
+
|
70
71
|
[os['operatingsystem'], os['operatingsystemrelease']]
|
71
72
|
end
|
72
73
|
|
73
|
-
|
74
|
+
supported.compact.to_h
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
@@ -98,11 +99,12 @@ module PuppetMetadata
|
|
98
99
|
|
99
100
|
unsupported = operatingsystems.map do |os, rels|
|
100
101
|
next unless rels
|
102
|
+
|
101
103
|
eol = rels.select { |rel| OperatingSystem.eol?(os, rel, at) }
|
102
104
|
[os, eol] if eol.any?
|
103
105
|
end
|
104
106
|
|
105
|
-
|
107
|
+
unsupported.compact.to_h
|
106
108
|
end
|
107
109
|
|
108
110
|
# A hash representation of the requirements
|
@@ -143,10 +145,12 @@ module PuppetMetadata
|
|
143
145
|
|
144
146
|
# Current latest major is 7. It is highly recommended that modules
|
145
147
|
# actually specify exact bounds, but this prevents an infinite loop.
|
146
|
-
end_major = requirement.end == SemanticPuppet::Version::MAX ? 7 : requirement.end.major
|
148
|
+
end_major = (requirement.end == SemanticPuppet::Version::MAX) ? 7 : requirement.end.major
|
147
149
|
|
148
150
|
(requirement.begin.major..end_major).select do |major|
|
149
|
-
requirement.include?(SemanticPuppet::Version.new(major, 0,
|
151
|
+
requirement.include?(SemanticPuppet::Version.new(major, 0,
|
152
|
+
0)) || requirement.include?(SemanticPuppet::Version.new(major,
|
153
|
+
99, 99))
|
150
154
|
end
|
151
155
|
end
|
152
156
|
|
@@ -197,11 +201,12 @@ module PuppetMetadata
|
|
197
201
|
|
198
202
|
reqs = array.map do |requirement|
|
199
203
|
next unless requirement['name']
|
204
|
+
|
200
205
|
version_requirement = requirement['version_requirement'] || '>= 0'
|
201
206
|
[requirement['name'], SemanticPuppet::VersionRange.parse(version_requirement)]
|
202
207
|
end
|
203
208
|
|
204
|
-
|
209
|
+
reqs.compact.to_h
|
205
210
|
end
|
206
211
|
|
207
212
|
def matches?(required_version, provided_version)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'date'
|
2
4
|
|
3
5
|
module PuppetMetadata
|
@@ -157,8 +159,10 @@ module PuppetMetadata
|
|
157
159
|
def eol_date(operatingsystem, release)
|
158
160
|
releases = EOL_DATES[operatingsystem]
|
159
161
|
return unless releases
|
162
|
+
|
160
163
|
date = releases[release]
|
161
164
|
return unless date
|
165
|
+
|
162
166
|
Date.parse(date)
|
163
167
|
end
|
164
168
|
|
@@ -193,8 +197,8 @@ module PuppetMetadata
|
|
193
197
|
def supported_releases(operatingsystem)
|
194
198
|
releases = EOL_DATES[operatingsystem]
|
195
199
|
today = Date.today
|
196
|
-
releases.select { |
|
197
|
-
|
200
|
+
releases.select { |_release, eol_date| !eol_date || Date.parse(eol_date) > today }.keys
|
201
|
+
.sort_by { |release| Gem::Version.new(release) }
|
198
202
|
end
|
199
203
|
end
|
200
204
|
end
|
data/lib/puppet_metadata.rb
CHANGED
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: 3.
|
4
|
+
version: 3.1.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: 2023-
|
12
|
+
date: 2023-07-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: metadata-json-lint
|
@@ -59,6 +59,20 @@ dependencies:
|
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '13.0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: rdoc
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '6.0'
|
69
|
+
type: :development
|
70
|
+
prerelease: false
|
71
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '6.0'
|
62
76
|
- !ruby/object:Gem::Dependency
|
63
77
|
name: rspec
|
64
78
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,19 +102,19 @@ dependencies:
|
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: '1.0'
|
90
104
|
- !ruby/object:Gem::Dependency
|
91
|
-
name:
|
105
|
+
name: voxpupuli-rubocop
|
92
106
|
requirement: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
110
|
+
version: 2.0.0
|
97
111
|
type: :development
|
98
112
|
prerelease: false
|
99
113
|
version_requirements: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
117
|
+
version: 2.0.0
|
104
118
|
- !ruby/object:Gem::Dependency
|
105
119
|
name: yard
|
106
120
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,6 +161,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
147
161
|
- - ">="
|
148
162
|
- !ruby/object:Gem::Version
|
149
163
|
version: '2.7'
|
164
|
+
- - "<"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '4'
|
150
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
168
|
requirements:
|
152
169
|
- - ">="
|