beaker-hostgenerator 2.0.0 → 2.2.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/.github/workflows/release.yml +1 -1
- data/.github/workflows/test.yml +1 -1
- data/.rubocop.yml +4 -27
- data/.rubocop_todo.yml +24 -376
- data/CHANGELOG.md +20 -0
- data/Gemfile +6 -11
- data/Rakefile +7 -7
- data/beaker-hostgenerator.gemspec +15 -19
- data/lib/beaker-hostgenerator/cli.rb +44 -46
- data/lib/beaker-hostgenerator/data.rb +1098 -1089
- data/lib/beaker-hostgenerator/generator.rb +18 -18
- data/lib/beaker-hostgenerator/hypervisor/abs.rb +1 -1
- data/lib/beaker-hostgenerator/hypervisor/docker.rb +2 -4
- data/lib/beaker-hostgenerator/hypervisor/hcloud.rb +8 -8
- data/lib/beaker-hostgenerator/hypervisor/unknown.rb +1 -1
- data/lib/beaker-hostgenerator/hypervisor/vagrant.rb +8 -8
- data/lib/beaker-hostgenerator/hypervisor/vmpooler.rb +2 -4
- data/lib/beaker-hostgenerator/hypervisor.rb +4 -4
- data/lib/beaker-hostgenerator/parser.rb +26 -42
- data/lib/beaker-hostgenerator/roles.rb +3 -4
- data/lib/beaker-hostgenerator/util.rb +4 -6
- data/lib/beaker-hostgenerator/version.rb +1 -1
- data/lib/beaker-hostgenerator.rb +3 -3
- metadata +11 -39
@@ -29,9 +29,7 @@ module BeakerHostGenerator
|
|
29
29
|
|
30
30
|
tokens.each do |token|
|
31
31
|
if is_ostype_token?(token, bhg_version)
|
32
|
-
if nodeid[ostype] == 1 and ostype
|
33
|
-
raise "Error: no nodes generated for #{ostype}"
|
34
|
-
end
|
32
|
+
raise "Error: no nodes generated for #{ostype}" if nodeid[ostype] == 1 and !ostype.nil?
|
35
33
|
|
36
34
|
ostype = token
|
37
35
|
next
|
@@ -52,7 +50,7 @@ module BeakerHostGenerator
|
|
52
50
|
# Delegate to the hypervisor
|
53
51
|
hypervisor = BeakerHostGenerator::Hypervisor.create(node_info, options)
|
54
52
|
host_config = hypervisor.generate_node(node_info, host_config, bhg_version)
|
55
|
-
config['CONFIG'].deeper_merge!(hypervisor.global_config
|
53
|
+
config['CONFIG'].deeper_merge!(hypervisor.global_config)
|
56
54
|
|
57
55
|
# Merge in any arbitrary key-value host settings. Treat the 'hostname'
|
58
56
|
# setting specially, and don't merge it in as an arbitrary setting.
|
@@ -61,7 +59,7 @@ module BeakerHostGenerator
|
|
61
59
|
arbitrary_settings.has_key?('hostname')
|
62
60
|
host_config.merge!(arbitrary_settings)
|
63
61
|
|
64
|
-
if PE_USE_WIN32 && ostype =~ /windows/ && node_info['bits'] ==
|
62
|
+
if PE_USE_WIN32 && ostype =~ /windows/ && node_info['bits'] == '64'
|
65
63
|
host_config['ruby_arch'] = 'x86'
|
66
64
|
host_config['install_32'] = true
|
67
65
|
end
|
@@ -77,9 +75,7 @@ module BeakerHostGenerator
|
|
77
75
|
decoded = prepare(options[:global_config])
|
78
76
|
# Support for strings without '{}' was introduced, so just double
|
79
77
|
# check here to ensure that we pass in values surrounded by '{}'.
|
80
|
-
|
81
|
-
decoded = "{#{decoded}}"
|
82
|
-
end
|
78
|
+
decoded = "{#{decoded}}" unless decoded.start_with?('{')
|
83
79
|
global_config = settings_string_to_map(decoded)
|
84
80
|
config['CONFIG'].deeper_merge!(global_config)
|
85
81
|
end
|
@@ -87,7 +83,7 @@ module BeakerHostGenerator
|
|
87
83
|
# Munge non-string scalar values into proper data types
|
88
84
|
unstringify_values!(config)
|
89
85
|
|
90
|
-
|
86
|
+
config
|
91
87
|
end
|
92
88
|
|
93
89
|
def get_host_roles(node_info)
|
@@ -101,22 +97,22 @@ module BeakerHostGenerator
|
|
101
97
|
roles << role
|
102
98
|
end
|
103
99
|
|
104
|
-
|
100
|
+
roles
|
105
101
|
end
|
106
102
|
|
107
103
|
private
|
108
104
|
|
109
105
|
def generate_host_roles!(host_config, node_info, options)
|
110
|
-
if
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
106
|
+
host_config['roles'] = if options[:disable_default_role]
|
107
|
+
[]
|
108
|
+
else
|
109
|
+
['agent']
|
110
|
+
end
|
115
111
|
|
116
112
|
host_config['roles'].concat get_host_roles(node_info)
|
117
113
|
host_config['roles'].uniq!
|
118
114
|
|
119
|
-
|
115
|
+
unless options[:disable_role_config]
|
120
116
|
host_config['roles'].each do |role|
|
121
117
|
host_config.deeper_merge! get_role_config(role)
|
122
118
|
end
|
@@ -145,12 +141,16 @@ module BeakerHostGenerator
|
|
145
141
|
# converted to true/false.
|
146
142
|
# The only valid boolean-strings are "true" and "false".
|
147
143
|
def unstringify_value(value)
|
148
|
-
result =
|
144
|
+
result = begin
|
145
|
+
Integer(value)
|
146
|
+
rescue StandardError
|
147
|
+
value
|
148
|
+
end
|
149
149
|
if value == 'true'
|
150
150
|
result = true
|
151
151
|
elsif value == 'false'
|
152
152
|
result = false
|
153
|
-
elsif value.
|
153
|
+
elsif value.is_a?(Array)
|
154
154
|
value.each_with_index do |v, i|
|
155
155
|
result[i] = unstringify_value(v)
|
156
156
|
end
|
@@ -24,7 +24,7 @@ module BeakerHostGenerator
|
|
24
24
|
|
25
25
|
case node_info['ostype']
|
26
26
|
when /^(almalinux|centos|redhat|rocky)/
|
27
|
-
base_config['template'] ||= base_config['platform'].gsub(/^el/,
|
27
|
+
base_config['template'] ||= base_config['platform'].gsub(/^el/, ::Regexp.last_match(1))
|
28
28
|
when /^fedora/
|
29
29
|
base_config['template'] ||= base_config['platform']
|
30
30
|
when /^ubuntu/
|
@@ -23,9 +23,7 @@ module BeakerHostGenerator
|
|
23
23
|
base_config['image'].sub!(/(\w+)/, 'almalinux')
|
24
24
|
end
|
25
25
|
|
26
|
-
if node_info['bits'] == '64'
|
27
|
-
base_config['image'] = "amd64/#{base_config['image']}"
|
28
|
-
end
|
26
|
+
base_config['image'] = "amd64/#{base_config['image']}" if node_info['bits'] == '64'
|
29
27
|
|
30
28
|
case node_info['ostype']
|
31
29
|
when /^ubuntu/
|
@@ -37,7 +35,7 @@ module BeakerHostGenerator
|
|
37
35
|
]
|
38
36
|
end
|
39
37
|
|
40
|
-
|
38
|
+
base_generate_node(node_info, base_config, bhg_version, :docker)
|
41
39
|
end
|
42
40
|
end
|
43
41
|
end
|
@@ -11,14 +11,14 @@ module BeakerHostGenerator
|
|
11
11
|
# ostype is ubuntu2204, debian10, rocky9
|
12
12
|
os, version = node_info['ostype'].split(/(\D+)/).reject!(&:empty?)
|
13
13
|
base_config['image'] = case os
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
when 'ubuntu'
|
15
|
+
"#{os}-#{version[0, 2]}.#{version[2, 2]}"
|
16
|
+
when 'centos'
|
17
|
+
version.to_i == 7 ? "#{os}-#{version}" : "#{os}-stream-#{version}"
|
18
|
+
else
|
19
|
+
"#{os}-#{version}"
|
20
|
+
end
|
21
|
+
base_generate_node(node_info, base_config, bhg_version, :hcloud)
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -7,7 +7,7 @@ module BeakerHostGenerator::Hypervisor
|
|
7
7
|
include BeakerHostGenerator::Data
|
8
8
|
|
9
9
|
def generate_node(node_info, base_config, bhg_version)
|
10
|
-
|
10
|
+
base_generate_node(node_info, base_config, bhg_version, :general)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -8,18 +8,18 @@ module BeakerHostGenerator
|
|
8
8
|
include BeakerHostGenerator::Data
|
9
9
|
|
10
10
|
def generate_node(node_info, base_config, bhg_version)
|
11
|
-
if node_info['ostype'] =~ /^centos/
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
base_config['box'] = if node_info['ostype'] =~ /^centos/
|
12
|
+
node_info['ostype'].sub(/(\d)/, '/\1')
|
13
|
+
elsif node_info['ostype'] =~ /^fedora/
|
14
|
+
node_info['ostype'].sub(/(\d)/, '/\1') + '-cloud-base'
|
15
|
+
else
|
16
|
+
"generic/#{node_info['ostype']}"
|
17
|
+
end
|
18
18
|
|
19
19
|
# We don't use this by default
|
20
20
|
base_config['synced_folder'] = 'disabled'
|
21
21
|
|
22
|
-
|
22
|
+
base_generate_node(node_info, base_config, bhg_version, :vagrant)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -19,7 +19,7 @@ module BeakerHostGenerator
|
|
19
19
|
|
20
20
|
case node_info['ostype']
|
21
21
|
when /^(almalinux|centos|redhat|rocky)/
|
22
|
-
base_config['template'] ||= base_config['platform'].gsub(/^el/,
|
22
|
+
base_config['template'] ||= base_config['platform'].gsub(/^el/, ::Regexp.last_match(1))
|
23
23
|
when /^fedora/
|
24
24
|
base_config['template'] ||= base_config['platform']
|
25
25
|
when /^ubuntu/
|
@@ -28,14 +28,12 @@ module BeakerHostGenerator
|
|
28
28
|
'x86_64'
|
29
29
|
when '32'
|
30
30
|
'i386'
|
31
|
-
else
|
32
|
-
nil
|
33
31
|
end
|
34
32
|
|
35
33
|
base_config['template'] ||= "#{node_info['ostype'].sub('ubuntu', 'ubuntu-')}-#{arch}" if arch
|
36
34
|
end
|
37
35
|
|
38
|
-
|
36
|
+
base_config
|
39
37
|
end
|
40
38
|
end
|
41
39
|
end
|
@@ -37,7 +37,7 @@ module BeakerHostGenerator
|
|
37
37
|
#
|
38
38
|
# @returns [Hash{String=>Hypervisor::Interface}] A map of hypervisor names
|
39
39
|
# and their implementations.
|
40
|
-
def self.builtin_hypervisors
|
40
|
+
def self.builtin_hypervisors
|
41
41
|
{
|
42
42
|
'vmpooler' => BeakerHostGenerator::Hypervisor::Vmpooler,
|
43
43
|
'vagrant' => BeakerHostGenerator::Hypervisor::Vagrant,
|
@@ -60,7 +60,7 @@ module BeakerHostGenerator
|
|
60
60
|
# This will only be called if the hypervisor is used for a node, in which
|
61
61
|
# case the returned map will be merged in with global configuration from
|
62
62
|
# other hypervisors.
|
63
|
-
def global_config
|
63
|
+
def global_config
|
64
64
|
{}
|
65
65
|
end
|
66
66
|
|
@@ -84,7 +84,7 @@ module BeakerHostGenerator
|
|
84
84
|
#
|
85
85
|
# @param [Integer] bhg_version The version of OS info to use when building
|
86
86
|
# up the node definition.
|
87
|
-
def generate_node(
|
87
|
+
def generate_node(_node_info, _base_config, _bhg_version)
|
88
88
|
raise "Method 'generate_node' not implemented!"
|
89
89
|
end
|
90
90
|
|
@@ -98,7 +98,7 @@ module BeakerHostGenerator
|
|
98
98
|
|
99
99
|
base_config['hypervisor'] = @name
|
100
100
|
|
101
|
-
|
101
|
+
base_config
|
102
102
|
end
|
103
103
|
end
|
104
104
|
end
|
@@ -62,7 +62,7 @@ module BeakerHostGenerator
|
|
62
62
|
# * agent
|
63
63
|
# * database
|
64
64
|
#
|
65
|
-
NODE_REGEX = /\A(?<bits>[A-Z0-9]+|\d+)((?<arbitrary_roles>([[:lower:]_]
|
65
|
+
NODE_REGEX = /\A(?<bits>[A-Z0-9]+|\d+)((?<arbitrary_roles>([[:lower:]_]*|,)*)\.)?(?<roles>[uacldfm]*)(?<host_settings>\{[[:print:]]*\})?\Z/
|
66
66
|
|
67
67
|
module_function
|
68
68
|
|
@@ -137,13 +137,7 @@ module BeakerHostGenerator
|
|
137
137
|
# @param [Integer] bhg_version The version of OS info to use when testing
|
138
138
|
# for whether the token represent an OS platform.
|
139
139
|
def is_ostype_token?(token, bhg_version)
|
140
|
-
BeakerHostGenerator::Data.get_platforms(bhg_version).
|
141
|
-
ostype = platform.split('-')[0]
|
142
|
-
if ostype == token
|
143
|
-
return true
|
144
|
-
end
|
145
|
-
end
|
146
|
-
return false
|
140
|
+
BeakerHostGenerator::Data.get_platforms(bhg_version).any? { |platform| platform.split('-')[0] == token }
|
147
141
|
end
|
148
142
|
|
149
143
|
# Converts a string token that represents a node (and not an OS type) into
|
@@ -168,28 +162,20 @@ module BeakerHostGenerator
|
|
168
162
|
node_info = NODE_REGEX.match(token)
|
169
163
|
|
170
164
|
if node_info
|
171
|
-
node_info =
|
165
|
+
node_info = node_info.names.zip(node_info.captures).to_h
|
172
166
|
else
|
173
167
|
raise BeakerHostGenerator::Exceptions::InvalidNodeSpecError.new,
|
174
168
|
"Invalid node_info token: #{token}"
|
175
169
|
end
|
170
|
+
node_info['arbitrary_roles'] = if node_info['arbitrary_roles']
|
171
|
+
node_info['arbitrary_roles'].split(',') || ''
|
172
|
+
else
|
173
|
+
# Default to empty list to avoid having to check for nil elsewhere
|
174
|
+
[]
|
175
|
+
end
|
176
|
+
node_info['host_settings'] = node_info['host_settings'] ? settings_string_to_map(node_info['host_settings']) : {}
|
176
177
|
|
177
|
-
|
178
|
-
node_info['arbitrary_roles'] =
|
179
|
-
node_info['arbitrary_roles'].split(',') || ''
|
180
|
-
else
|
181
|
-
# Default to empty list to avoid having to check for nil elsewhere
|
182
|
-
node_info['arbitrary_roles'] = []
|
183
|
-
end
|
184
|
-
|
185
|
-
if node_info['host_settings']
|
186
|
-
node_info['host_settings'] =
|
187
|
-
settings_string_to_map(node_info['host_settings'])
|
188
|
-
else
|
189
|
-
node_info['host_settings'] = {}
|
190
|
-
end
|
191
|
-
|
192
|
-
return node_info
|
178
|
+
node_info
|
193
179
|
end
|
194
180
|
|
195
181
|
# Transforms the arbitrary host settings map from a string representation
|
@@ -228,7 +214,7 @@ module BeakerHostGenerator
|
|
228
214
|
|
229
215
|
break if blob.nil?
|
230
216
|
|
231
|
-
if stringscan.pos
|
217
|
+
if stringscan.pos == 1
|
232
218
|
object = {}
|
233
219
|
object_depth.push(object)
|
234
220
|
next
|
@@ -251,7 +237,7 @@ module BeakerHostGenerator
|
|
251
237
|
next
|
252
238
|
end
|
253
239
|
|
254
|
-
if
|
240
|
+
if [']', '}'].include?(blob)
|
255
241
|
object_depth.pop
|
256
242
|
current_depth = current_depth.pred
|
257
243
|
next
|
@@ -263,11 +249,11 @@ module BeakerHostGenerator
|
|
263
249
|
if blob[-2] == '='
|
264
250
|
raise Beaker::HostGenerator::Exceptions::InvalidNodeSpecError unless blob.end_with?('{', '[')
|
265
251
|
|
266
|
-
if blob[-1] == '{'
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
252
|
+
current_object[blob[0..-3]] = if blob[-1] == '{'
|
253
|
+
{}
|
254
|
+
else
|
255
|
+
[]
|
256
|
+
end
|
271
257
|
object_depth.push(current_object[blob[0..-3]])
|
272
258
|
current_depth = current_depth.next
|
273
259
|
next
|
@@ -288,9 +274,7 @@ module BeakerHostGenerator
|
|
288
274
|
next
|
289
275
|
end
|
290
276
|
|
291
|
-
if blob == ','
|
292
|
-
next
|
293
|
-
end
|
277
|
+
next if blob == ','
|
294
278
|
|
295
279
|
if blob[-1] == ','
|
296
280
|
if current_type == Hash
|
@@ -308,18 +292,18 @@ module BeakerHostGenerator
|
|
308
292
|
end
|
309
293
|
end
|
310
294
|
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
295
|
+
next unless blob[-1] == ']'
|
296
|
+
|
297
|
+
current_object.push(blob[0..-2])
|
298
|
+
object_depth.pop
|
299
|
+
current_depth = current_depth.pred
|
300
|
+
next
|
317
301
|
end
|
318
302
|
|
319
303
|
object
|
320
304
|
rescue Exception
|
321
305
|
raise BeakerHostGenerator::Exceptions::InvalidNodeSpecError,
|
322
|
-
|
306
|
+
"Malformed host settings: #{host_settings}"
|
323
307
|
end
|
324
308
|
end
|
325
309
|
end
|
@@ -11,10 +11,9 @@ module BeakerHostGenerator
|
|
11
11
|
}
|
12
12
|
|
13
13
|
CM_CONFIG = { 'main' => {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}
|
14
|
+
'dns_alt_names' => 'puppet',
|
15
|
+
'environmentpath' => '/etc/puppetlabs/puppet/environments',
|
16
|
+
} }
|
18
17
|
|
19
18
|
ROLE_CONFIG = {
|
20
19
|
'compile_master' => CM_CONFIG,
|
@@ -7,7 +7,7 @@ module BeakerHostGenerator
|
|
7
7
|
module Utils
|
8
8
|
module_function
|
9
9
|
|
10
|
-
def pe_dir(version,
|
10
|
+
def pe_dir(version, _family = nil)
|
11
11
|
BeakerHostGenerator::Data.pe_dir(version)
|
12
12
|
end
|
13
13
|
|
@@ -15,7 +15,7 @@ module BeakerHostGenerator
|
|
15
15
|
vmpooler_hypervisor = BeakerHostGenerator::Hypervisor::Vmpooler.new
|
16
16
|
config = {}
|
17
17
|
config.deeper_merge! BeakerHostGenerator::Data.BASE_CONFIG
|
18
|
-
config['CONFIG'].deeper_merge! vmpooler_hypervisor.global_config
|
18
|
+
config['CONFIG'].deeper_merge! vmpooler_hypervisor.global_config
|
19
19
|
|
20
20
|
hosts.each do |host|
|
21
21
|
config['HOSTS'][host.node_name] = {
|
@@ -25,12 +25,10 @@ module BeakerHostGenerator
|
|
25
25
|
}
|
26
26
|
end
|
27
27
|
|
28
|
-
File.
|
29
|
-
file.write(config.to_yaml)
|
30
|
-
end
|
28
|
+
File.write(path, config.to_yaml)
|
31
29
|
end
|
32
30
|
|
33
|
-
def get_platforms(
|
31
|
+
def get_platforms(_hypervisor_type = 'vmpooler', bhg_version = 0)
|
34
32
|
BeakerHostGenerator::Data.get_platforms(bhg_version)
|
35
33
|
end
|
36
34
|
|
data/lib/beaker-hostgenerator.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Load libraries.
|
2
2
|
|
3
3
|
module BeakerHostGenerator
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
require 'beaker-hostgenerator/cli'
|
5
|
+
require 'beaker-hostgenerator/data'
|
6
|
+
require 'beaker-hostgenerator/generator'
|
7
7
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-hostgenerator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Branan Purvine-Riley
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2023-
|
14
|
+
date: 2023-05-05 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: fakefs
|
@@ -37,16 +37,16 @@ dependencies:
|
|
37
37
|
name: minitest
|
38
38
|
requirement: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- - "
|
40
|
+
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '
|
42
|
+
version: '5.18'
|
43
43
|
type: :development
|
44
44
|
prerelease: false
|
45
45
|
version_requirements: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- - "
|
47
|
+
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: '
|
49
|
+
version: '5.18'
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: pry
|
52
52
|
requirement: !ruby/object:Gem::Requirement
|
@@ -93,44 +93,16 @@ dependencies:
|
|
93
93
|
name: rspec-its
|
94
94
|
requirement: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
|
-
- - "
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
version: '0'
|
99
|
-
type: :development
|
100
|
-
prerelease: false
|
101
|
-
version_requirements: !ruby/object:Gem::Requirement
|
102
|
-
requirements:
|
103
|
-
- - ">="
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: '0'
|
106
|
-
- !ruby/object:Gem::Dependency
|
107
|
-
name: thin
|
108
|
-
requirement: !ruby/object:Gem::Requirement
|
109
|
-
requirements:
|
110
|
-
- - ">="
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
version: '0'
|
113
|
-
type: :development
|
114
|
-
prerelease: false
|
115
|
-
version_requirements: !ruby/object:Gem::Requirement
|
116
|
-
requirements:
|
117
|
-
- - ">="
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
version: '0'
|
120
|
-
- !ruby/object:Gem::Dependency
|
121
|
-
name: yard
|
122
|
-
requirement: !ruby/object:Gem::Requirement
|
123
|
-
requirements:
|
124
|
-
- - ">="
|
96
|
+
- - "~>"
|
125
97
|
- !ruby/object:Gem::Version
|
126
|
-
version: '
|
98
|
+
version: '1.3'
|
127
99
|
type: :development
|
128
100
|
prerelease: false
|
129
101
|
version_requirements: !ruby/object:Gem::Requirement
|
130
102
|
requirements:
|
131
|
-
- - "
|
103
|
+
- - "~>"
|
132
104
|
- !ruby/object:Gem::Version
|
133
|
-
version: '
|
105
|
+
version: '1.3'
|
134
106
|
- !ruby/object:Gem::Dependency
|
135
107
|
name: deep_merge
|
136
108
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,7 +165,7 @@ files:
|
|
193
165
|
- lib/beaker-hostgenerator/version.rb
|
194
166
|
homepage: https://github.com/puppetlabs/beaker-hostgenerator
|
195
167
|
licenses:
|
196
|
-
-
|
168
|
+
- Apache-2.0
|
197
169
|
metadata: {}
|
198
170
|
post_install_message:
|
199
171
|
rdoc_options: []
|