cfndsl 0.16.6 → 0.16.7

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: 32406255a9011d3aed5a47d015a3b55e3d7f2f500cff17847aba34e29f02e03f
4
- data.tar.gz: f340711869f18db7f011c2a9e4dadf928ca32efa12ab977590d54f72d0db37a3
3
+ metadata.gz: d5288f90b75b1ba02860fc1b9a7a6feea6a90d1d18476dc4f9f6779ffea073d1
4
+ data.tar.gz: f4b821f8261b474bd85bbf9d248b83a4971e017932df31f54e0d99fbcea105c8
5
5
  SHA512:
6
- metadata.gz: 7186f763335491c5777d1194cddce0b96687cfd335cc6d50dcff13ee7491ee25b37713f968d8579c980688bbfa399d3c5b8cd783bef2164416c15214a0ccd029
7
- data.tar.gz: 8793e4e15dfad5a6d03ffaf7c43742ee9aedd24d649780366f197a5e9fa7c2f5b81a06cd30122155f8034b0d8011e1e8f7e96ef34d0e1e945945befa999228f1
6
+ metadata.gz: 9dce8cb78e563d0d8a514c7c4a5c9034c2b94f05a7abc0cdef51b83ab6dba0b5edfbf0af791d51283af69ab4820abb4f57c048f5ca2d1955edc0f8ea41b6c5b1
7
+ data.tar.gz: 1ca869af3522ddc2b719b1d6620bed102bfd691de702271bff9c3cb633dd353070f0e3929cd1249f02cc832ad03f2c2aaaab957b53ebb760475f5ecd41afcbfd
@@ -1,7 +1,19 @@
1
1
  # Change Log
2
2
 
3
- ## [0.16.6](https://github.com/cfndsl/cfndsl/tree/0.16.6) (2018-05-31)
4
- [Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.16.5...0.16.6)
3
+ ## [0.16.7](https://github.com/cfndsl/cfndsl/tree/0.16.7) (2018-11-12)
4
+ [Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.16.6...0.16.7)
5
+
6
+ **Closed issues:**
7
+
8
+ - Cloudformation Specification version 2.12.0 has missing types [\#377](https://github.com/cfndsl/cfndsl/issues/377)
9
+ - Value of property CreditSpecification must be an object [\#376](https://github.com/cfndsl/cfndsl/issues/376)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - add missing types fixes \#377 [\#378](https://github.com/cfndsl/cfndsl/pull/378) ([gergnz](https://github.com/gergnz))
14
+
15
+ ## [v0.16.6](https://github.com/cfndsl/cfndsl/tree/v0.16.6) (2018-05-30)
16
+ [Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.16.5...v0.16.6)
5
17
 
6
18
  **Fixed bugs:**
7
19
 
@@ -49,10 +61,6 @@
49
61
  ## [v0.16.1](https://github.com/cfndsl/cfndsl/tree/v0.16.1) (2017-12-02)
50
62
  [Full Changelog](https://github.com/cfndsl/cfndsl/compare/v0.16.0...v0.16.1)
51
63
 
52
- **Closed issues:**
53
-
54
- - Metadata / AWS::CloudFormation::Interface support? [\#357](https://github.com/cfndsl/cfndsl/issues/357)
55
-
56
64
  **Merged pull requests:**
57
65
 
58
66
  - 352 update contacts repos [\#355](https://github.com/cfndsl/cfndsl/pull/355) ([gergnz](https://github.com/gergnz))
@@ -83,7 +91,6 @@
83
91
  **Closed issues:**
84
92
 
85
93
  - backtrace shown when incorrect resource name is passed to -g [\#338](https://github.com/cfndsl/cfndsl/issues/338)
86
- - Condition and ALB ListenerRule Conditions get merged [\#337](https://github.com/cfndsl/cfndsl/issues/337)
87
94
  - Request to include support for AWS::Logs::SubscriptionFilter [\#335](https://github.com/cfndsl/cfndsl/issues/335)
88
95
  - Support for Lambda backed custom resources with shorthand [\#315](https://github.com/cfndsl/cfndsl/issues/315)
89
96
  - Merging cfnlego, cfn2dsl into cfndsl [\#272](https://github.com/cfndsl/cfndsl/issues/272)
data/bin/cfndsl CHANGED
@@ -39,6 +39,7 @@ optparse = OptionParser.new do |opts|
39
39
 
40
40
  opts.on('-f', '--format FORMAT', 'Specify the output format (JSON default)') do |format|
41
41
  raise "Format #{format} not supported" unless %w[json yaml].include?(format)
42
+
42
43
  options[:outformat] = format
43
44
  end
44
45
 
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
  s.license = 'MIT'
15
15
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
16
16
  s.require_paths = ['lib']
17
- s.required_ruby_version = '~> 2.1'
17
+ s.required_ruby_version = '~> 2.2'
18
18
 
19
19
  s.executables << 'cfndsl'
20
20
 
@@ -44,6 +44,7 @@ module CfnDsl
44
44
  # Equivalent to the CloudFormation template built in function Fn::And
45
45
  def FnAnd(array)
46
46
  raise 'The array passed to Fn::And must have at least 2 elements and no more than 10' if !array || array.count < 2 || array.count > 10
47
+
47
48
  Fn.new('And', array)
48
49
  end
49
50
 
@@ -69,6 +70,7 @@ module CfnDsl
69
70
  # Equivalent to the CloudFormation template built in function Fn::Or
70
71
  def FnOr(array)
71
72
  raise 'The array passed to Fn::Or must have at least 2 elements and no more than 10' if !array || array.count < 2 || array.count > 10
73
+
72
74
  Fn.new('Or', array)
73
75
  end
74
76
 
@@ -80,8 +82,10 @@ module CfnDsl
80
82
  # Equivalent to the CloudFormation template built in function Fn::Sub
81
83
  def FnSub(string, substitutions = nil)
82
84
  raise ArgumentError, 'The first argument passed to Fn::Sub must be a string' unless string.is_a? String
85
+
83
86
  if substitutions
84
87
  raise ArgumentError, 'The second argument passed to Fn::Sub must be a Hash' unless substitutions.is_a? Hash
88
+
85
89
  Fn.new('Sub', [string, substitutions])
86
90
  else
87
91
  Fn.new('Sub', string)
@@ -29,6 +29,7 @@ module CfnDsl
29
29
  parts = resource.split('::')
30
30
  until parts.empty?
31
31
  break if CfnDsl.reserved_items.include? parts.first
32
+
32
33
  abreve_name = parts.join('_')
33
34
  if accessors.key? abreve_name
34
35
  accessors.delete abreve_name # Delete potentially ambiguous names
@@ -78,6 +79,7 @@ module CfnDsl
78
79
  sname = CfnDsl::Plurals.singularize pname
79
80
 
80
81
  return if sname == pname
82
+
81
83
  resource.class_eval do
82
84
  CfnDsl.method_names(sname) do |method|
83
85
  define_method(method) do |value = nil, &block|
@@ -8,56 +8,56 @@ module CfnDsl
8
8
  {
9
9
  'AWS::Serverless::Function' => {
10
10
  'Properties' => {
11
- 'Handler' => { 'PrimitiveType' => 'String' },
12
- 'Runtime' => { 'PrimitiveType' => 'String' },
13
- 'CodeUri' => { 'PrimitiveType' => 'String' },
14
- 'FunctionName' => { 'PrimitiveType' => 'String' },
15
- 'Description' => { 'PrimitiveType' => 'String' },
16
- 'MemorySize' => { 'PrimitiveType' => 'Integer' },
17
- 'Timeout' => { 'PrimitiveType' => 'Integer' },
18
- 'Role' => { 'PrimitiveType' => 'String' },
19
- 'Policies' => { 'Type' => 'List', 'ItemType' => 'Policy' },
20
- 'Environment' => { 'PrimitiveType' => 'Json' },
21
- 'VpcConfig' => { 'Type' => 'VpcConfig' },
22
- 'Events' => { 'PrimitiveType' => 'Json' },
23
- 'Tags' => { 'PrimitiveType' => 'Json' },
24
- 'Tracing' => { 'PrimitiveType' => 'String' },
25
- 'KmsKeyArn' => { 'PrimitiveType' => 'String' },
26
- 'DeadLetterQueue' => { 'PrimitiveType' => 'Json' },
27
- 'DeploymentPreference' => { 'Type' => 'DeploymentPreference' },
28
- 'AutoPublishAlias' => { 'PrimitiveType' => 'String' },
11
+ 'Handler' => { 'PrimitiveType' => 'String' },
12
+ 'Runtime' => { 'PrimitiveType' => 'String' },
13
+ 'CodeUri' => { 'PrimitiveType' => 'String' },
14
+ 'FunctionName' => { 'PrimitiveType' => 'String' },
15
+ 'Description' => { 'PrimitiveType' => 'String' },
16
+ 'MemorySize' => { 'PrimitiveType' => 'Integer' },
17
+ 'Timeout' => { 'PrimitiveType' => 'Integer' },
18
+ 'Role' => { 'PrimitiveType' => 'String' },
19
+ 'Policies' => { 'Type' => 'List', 'ItemType' => 'Policy' },
20
+ 'Environment' => { 'PrimitiveType' => 'Json' },
21
+ 'VpcConfig' => { 'Type' => 'VpcConfig' },
22
+ 'Events' => { 'PrimitiveType' => 'Json' },
23
+ 'Tags' => { 'PrimitiveType' => 'Json' },
24
+ 'Tracing' => { 'PrimitiveType' => 'String' },
25
+ 'KmsKeyArn' => { 'PrimitiveType' => 'String' },
26
+ 'DeadLetterQueue' => { 'PrimitiveType' => 'Json' },
27
+ 'DeploymentPreference' => { 'Type' => 'DeploymentPreference' },
28
+ 'AutoPublishAlias' => { 'PrimitiveType' => 'String' },
29
29
  'ReservedConcurrentExecutions' => { 'PrimitiveType' => 'Integer' }
30
30
  }
31
31
  },
32
32
  'AWS::Serverless::Api' => {
33
33
  'Properties' => {
34
- 'Name' => { 'PrimitiveType' => 'String' },
35
- 'StageName' => { 'PrimitiveType' => 'String' },
36
- 'DefinitionUri' => { 'PrimitiveType' => 'String' },
37
- 'DefinitionBody' => { 'PrimitiveType' => 'Json' },
38
- 'CacheClusterEnabled' => { 'PrimitiveType' => 'Boolean' },
39
- 'CacheClusterSize' => { 'PrimitiveType' => 'String' },
40
- 'Variables' => { 'PrimitiveType' => 'Json' },
41
- 'MethodSettings' => { 'PrimitiveType' => 'Json' },
34
+ 'Name' => { 'PrimitiveType' => 'String' },
35
+ 'StageName' => { 'PrimitiveType' => 'String' },
36
+ 'DefinitionUri' => { 'PrimitiveType' => 'String' },
37
+ 'DefinitionBody' => { 'PrimitiveType' => 'Json' },
38
+ 'CacheClusterEnabled' => { 'PrimitiveType' => 'Boolean' },
39
+ 'CacheClusterSize' => { 'PrimitiveType' => 'String' },
40
+ 'Variables' => { 'PrimitiveType' => 'Json' },
41
+ 'MethodSettings' => { 'PrimitiveType' => 'Json' },
42
42
  'EndpointConfiguration' => { 'PrimitiveType' => 'String' },
43
- 'BinaryMediaTypes' => { 'Type' => 'List', 'PrimitiveType' => 'String' },
44
- 'Cors' => { 'PrimitiveType' => 'String' }
43
+ 'BinaryMediaTypes' => { 'Type' => 'List', 'PrimitiveType' => 'String' },
44
+ 'Cors' => { 'PrimitiveType' => 'String' }
45
45
  }
46
46
  },
47
47
  'AWS::Serverless::SimpleTable' => {
48
48
  'Properties' => {
49
49
  'PrimaryKey' => { 'Type' => 'PrimaryKey' },
50
50
  'ProvisionedThroughput' => { 'Type' => 'ProvisionedThroughput' },
51
- 'Tags' => { 'PrimitiveType' => 'Json' },
52
- 'TableName' => { 'PrimitiveType' => 'String' }
51
+ 'Tags' => { 'PrimitiveType' => 'Json' },
52
+ 'TableName' => { 'PrimitiveType' => 'String' }
53
53
  }
54
54
  },
55
55
  'AWS::SSM::Parameter' => {
56
56
  'Properties' => {
57
- 'Name' => { 'PrimitiveType' => 'String' },
57
+ 'Name' => { 'PrimitiveType' => 'String' },
58
58
  'Description' => { 'PrimitiveType' => 'String' },
59
- 'Type' => { 'PrimitiveType' => 'String' },
60
- 'Value' => { 'PrimitiveType' => 'String' }
59
+ 'Type' => { 'PrimitiveType' => 'String' },
60
+ 'Value' => { 'PrimitiveType' => 'String' }
61
61
  }
62
62
  }
63
63
  }
@@ -71,7 +71,19 @@ module CfnDsl
71
71
  'AWS::EC2::LaunchTemplate.Tag' => {
72
72
  'Properties' => {
73
73
  'Value' => { 'PrimitiveType' => 'String' },
74
- 'Key' => { 'PrimitiveType' => 'String' }
74
+ 'Key' => { 'PrimitiveType' => 'String' }
75
+ }
76
+ },
77
+ 'AWS::EC2::SpotFleet.Tag' => {
78
+ 'Properties' => {
79
+ 'Value' => { 'PrimitiveType' => 'String' },
80
+ 'Key' => { 'PrimitiveType' => 'String' }
81
+ }
82
+ },
83
+ 'AWS::DLM::LifecyclePolicy.Tag' => {
84
+ 'Properties' => {
85
+ 'Value' => { 'PrimitiveType' => 'String' },
86
+ 'Key' => { 'PrimitiveType' => 'String' }
75
87
  }
76
88
  },
77
89
  'AWS::Serverless::SimpleTable.PrimaryKey' => {
@@ -82,14 +94,14 @@ module CfnDsl
82
94
  },
83
95
  'AWS::Serverless::SimpleTable.ProvisionedThroughput' => {
84
96
  'Properties' => {
85
- 'ReadCapacityUnits' => { 'PrimitiveType' => 'Integer' },
97
+ 'ReadCapacityUnits' => { 'PrimitiveType' => 'Integer' },
86
98
  'WriteCapacityUnits' => { 'PrimitiveType' => 'Integer' }
87
99
  }
88
100
  },
89
101
  'AWS::Serverless::Function.Policy' => {
90
102
  'Properties' => {
91
103
  'PolicyDocument' => { 'PrimitiveType' => 'Json' },
92
- 'PolicyName' => { 'PrimitiveType' => 'String' }
104
+ 'PolicyName' => { 'PrimitiveType' => 'String' }
93
105
  }
94
106
  },
95
107
  'AWS::Serverless::Function.VpcConfig' => {
@@ -101,9 +113,9 @@ module CfnDsl
101
113
  'AWS::Serverless::Function.DeploymentPreference' => {
102
114
  'Properties' => {
103
115
  'Enabled' => { 'PrimitiveType' => 'Boolean' },
104
- 'Type' => { 'PrimitiveType' => 'String' },
105
- 'Alarms' => { 'Type' => 'List', 'PrimitiveType' => 'String' },
106
- 'Hooks' => { 'Type' => 'List', 'PrimitiveType' => 'String' }
116
+ 'Type' => { 'PrimitiveType' => 'String' },
117
+ 'Alarms' => { 'Type' => 'List', 'PrimitiveType' => 'String' },
118
+ 'Hooks' => { 'Type' => 'List', 'PrimitiveType' => 'String' }
107
119
  }
108
120
  }
109
121
  }
@@ -5,15 +5,15 @@ module CfnDsl
5
5
 
6
6
  @plurals = {
7
7
  'AssumeRolePolicyDocument' => 'AssumeRolePolicyDocument',
8
- 'CreationPolicy' => 'CreationPolicy',
9
- 'DBSecurityGroupIngress' => 'DBSecurityGroupIngress',
10
- 'Metadata' => 'Metadata',
11
- 'Policy' => 'Policies',
12
- 'PolicyDocument' => 'PolicyDocument',
13
- 'Property' => 'Properties',
14
- 'SecurityGroupEgress' => 'SecurityGroupEgress',
15
- 'SecurityGroupIngress' => 'SecurityGroupIngress',
16
- 'UpdatePolicy' => 'UpdatePolicy'
8
+ 'CreationPolicy' => 'CreationPolicy',
9
+ 'DBSecurityGroupIngress' => 'DBSecurityGroupIngress',
10
+ 'Metadata' => 'Metadata',
11
+ 'Policy' => 'Policies',
12
+ 'PolicyDocument' => 'PolicyDocument',
13
+ 'Property' => 'Properties',
14
+ 'SecurityGroupEgress' => 'SecurityGroupEgress',
15
+ 'SecurityGroupIngress' => 'SecurityGroupIngress',
16
+ 'UpdatePolicy' => 'UpdatePolicy'
17
17
  }
18
18
  @singles = @plurals.invert
19
19
 
@@ -44,6 +44,7 @@ module CfnDsl
44
44
 
45
45
  def model(filename)
46
46
  raise "#{filename} doesn't exist" unless File.exist?(filename)
47
+
47
48
  verbose.puts("using extras #{extra}") if verbose
48
49
  CfnDsl.eval_file_with_extras(filename, extra, verbose)
49
50
  end
@@ -41,14 +41,14 @@ module CfnDsl
41
41
  # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/PerceivedComplexity
42
42
  def self.extract_types(spec)
43
43
  primitive_types = {
44
- 'String' => 'String',
45
- 'Boolean' => 'Boolean',
46
- 'Json' => 'Json',
47
- 'Integer' => 'Integer',
48
- 'Number' => 'Number',
49
- 'Double' => 'Double',
44
+ 'String' => 'String',
45
+ 'Boolean' => 'Boolean',
46
+ 'Json' => 'Json',
47
+ 'Integer' => 'Integer',
48
+ 'Number' => 'Number',
49
+ 'Double' => 'Double',
50
50
  'Timestamp' => 'Timestamp',
51
- 'Long' => 'Long'
51
+ 'Long' => 'Long'
52
52
  }
53
53
  spec.each_with_object(primitive_types) do |(property_name, property_info), types|
54
54
  # In order to name things uniquely and allow for connections
@@ -58,6 +58,7 @@ module CfnDsl
58
58
  root_resource_name = root_resource ? root_resource[1].gsub(/::/, '') : property_name
59
59
  property_name = property_name.gsub(/::|\./, '')
60
60
  next unless property_info['Properties']
61
+
61
62
  properties = property_info['Properties'].each_with_object({}) do |(nested_prop_name, nested_prop_info), extracted|
62
63
  if nested_prop_info['Type'] == 'Map' || nested_prop_info['Type'] == 'Json'
63
64
  # The Map type and the incorrectly labelled Json type
@@ -84,6 +85,7 @@ module CfnDsl
84
85
 
85
86
  def self.determine_spec_file
86
87
  return CfnDsl.specification_file if File.exist? CfnDsl.specification_file
88
+
87
89
  File.expand_path('aws/resource_specification.json', __dir__)
88
90
  end
89
91
 
@@ -58,6 +58,7 @@ module CfnDsl
58
58
  classes.each_pair do |typename, type|
59
59
  typeval = types_list['Types'][typename]
60
60
  next unless typeval.respond_to?(:each_pair)
61
+
61
62
  typeval.each_pair do |attr_name, attr_type|
62
63
  if attr_type.is_a?(Array)
63
64
  klass = type_def.const_get(attr_type[0])
@@ -1,3 +1,3 @@
1
1
  module CfnDsl
2
- VERSION = '0.16.6'.freeze
2
+ VERSION = '0.16.7'.freeze
3
3
  end
@@ -85,6 +85,7 @@ module DeepMerge
85
85
  knockout_prefix = options[:knockout_prefix] || nil
86
86
  raise InvalidParameter, 'knockout_prefix cannot be an empty string in deep_merge!' if knockout_prefix == ''
87
87
  raise InvalidParameter, 'overwrite_unmergeable must be true if knockout_prefix is specified in deep_merge!' if knockout_prefix && !overwrite_unmergeable
88
+
88
89
  # if present: we will split and join arrays on this char before merging
89
90
  array_split_char = options[:unpack_arrays] || false
90
91
  # request that we avoid merging arrays
@@ -103,6 +104,7 @@ module DeepMerge
103
104
  di = options[:debug_indent] || ''
104
105
  # do nothing if source is nil
105
106
  return dest if !merge_nil_values && source.nil?
107
+
106
108
  # if dest doesn't exist, then simply copy source to it
107
109
  if !dest && overwrite_unmergeable
108
110
  dest = source; return dest
@@ -1,4 +1,3 @@
1
-
2
1
  # We start things off by calling the CloudFormation function.
3
2
  CloudFormation do
4
3
  # Declare the template format version
@@ -89,8 +89,8 @@ a stack from this template.
89
89
  AutoScalingGroup('WebServerGroup') do
90
90
  UpdatePolicy('AutoScalingRollingUpdate',
91
91
  'MinInstancesInService' => '1',
92
- 'MaxBatchSize' => '1',
93
- 'PauseTime' => 'PT15M')
92
+ 'MaxBatchSize' => '1',
93
+ 'PauseTime' => 'PT15M')
94
94
  AvailabilityZones FnGetAZs('')
95
95
  LaunchConfigurationName Ref('LaunchConfig')
96
96
  MinSize 1
@@ -3,10 +3,10 @@ CloudFormation do
3
3
  GroupDescription 'Allow incoming HTTP traffic from anywhere'
4
4
  SecurityGroupIngress [
5
5
  {
6
- 'CidrIp' => '0.0.0.0/0',
6
+ 'CidrIp' => '0.0.0.0/0',
7
7
  'IpProtocol' => 'tcp',
8
- 'FromPort' => 80,
9
- 'ToPort' => 80
8
+ 'FromPort' => 80,
9
+ 'ToPort' => 80
10
10
  }
11
11
  ]
12
12
  end
@@ -5,8 +5,8 @@ CloudFormation do
5
5
  {
6
6
  'SourceSecurityGroupId' => FnImportValue(:webSecurityGroupId),
7
7
  'IpProtocol' => 'tcp',
8
- 'FromPort' => 7777,
9
- 'ToPort' => 7777
8
+ 'FromPort' => 7777,
9
+ 'ToPort' => 7777
10
10
  }
11
11
  ]
12
12
  end
@@ -73,8 +73,8 @@ CloudFormation do
73
73
  AutoScalingGroup('ASG') do
74
74
  UpdatePolicy('AutoScalingRollingUpdate',
75
75
  'MinInstancesInService' => '1',
76
- 'MaxBatchSize' => '1',
77
- 'PauseTime' => 'PT15M')
76
+ 'MaxBatchSize' => '1',
77
+ 'PauseTime' => 'PT15M')
78
78
  AvailabilityZones FnGetAZs('')
79
79
  LaunchConfigurationName Ref('LaunchConfig')
80
80
  MinSize 1
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfndsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.6
4
+ version: 0.16.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Jack
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-05-31 00:00:00.000000000 Z
14
+ date: 2018-11-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -143,7 +143,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
143
  requirements:
144
144
  - - "~>"
145
145
  - !ruby/object:Gem::Version
146
- version: '2.1'
146
+ version: '2.2'
147
147
  required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - ">="
@@ -151,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
151
  version: '0'
152
152
  requirements: []
153
153
  rubyforge_project:
154
- rubygems_version: 2.7.7
154
+ rubygems_version: 2.7.8
155
155
  signing_key:
156
156
  specification_version: 4
157
157
  summary: AWS Cloudformation DSL