cfn2dsl 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d41f4227841cd556701c4bdeb8b203b32a2889a9
4
- data.tar.gz: acf409e0bb4abf9bc6d58bf0223f4d6c83c581e5
2
+ SHA256:
3
+ metadata.gz: 362a368962d8e432205733286191423e04b5db0235647d243985153bed960b63
4
+ data.tar.gz: 26b99c51a9da1f59b26f3b06d3358c94cc19bc68cc5d0fb20078808cfcc44d77
5
5
  SHA512:
6
- metadata.gz: 7181c56d9605bf9a15abf5e767f06d476dba22755acec7f7ff446bf6d85cbdd5fa17d403419a97975b41950571db7b13a6e89adf8580ef460cf6b2f916c17f29
7
- data.tar.gz: 2057466527c91674128aa24175b4f56b302794a793268339d4499c0c0f07dba101bd72cf2b9bdd1a7f10a7dfe1a8b9ffecf3794f4e38a793afc6f46071c265be
6
+ metadata.gz: 8048e157208a924a3eae68415d96bf8c650a9484cefcea4d7d829c455cc35a0cf2c6fadb47e79cdbf8c195b92d41061ba4647f51c393bc5c0a2824819682ff4b
7
+ data.tar.gz: 2cba5277344c9e986890c1abe1ab434e989359389cc8dbb1357ead8f48591052bf79fb442f97d423e28f00b891ba7625074506210c7bd042828a212b37ca542d
data/bin/cfn2dsl CHANGED
@@ -30,7 +30,7 @@ unless options[:template]
30
30
  puts op
31
31
  exit 1
32
32
  else
33
- template = JSON.load(File.new(options[:template]))
33
+ template = IO.read(options[:template])
34
34
  cfndsl = CloudFormation.new(template)
35
35
  end
36
36
 
data/lib/cfn2dsl.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
 
3
3
  require 'json'
4
+ require 'yaml'
4
5
  require 'optparse'
5
6
  require 'ap'
6
7
 
@@ -16,6 +17,7 @@ require 'render'
16
17
  require 'version'
17
18
  require 'rules'
18
19
  require 'metadata'
20
+ require 'error'
19
21
 
20
22
  AwesomePrint.defaults = {
21
23
  :indent => -2,
@@ -24,3 +26,15 @@ AwesomePrint.defaults = {
24
26
  :plain => true
25
27
  }
26
28
 
29
+ YAML.add_domain_type('', 'Ref') { |type, val| { 'Ref' => val } }
30
+
31
+ YAML.add_domain_type('', 'GetAtt') do |type, val|
32
+ if val.is_a? String
33
+ val = val.split('.')
34
+ end
35
+ { 'Fn::GetAtt' => val }
36
+ end
37
+
38
+ %w(Join Base64 Sub Cidr Split Select ImportValue GetAZs FindInMap And Or If Not).each do |function_name|
39
+ YAML.add_domain_type('', function_name) { |type, val| { "Fn::#{function_name}" => val } }
40
+ end
data/lib/cfn_parser.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module CfnParser
2
2
 
3
- def parse_cfn_json(json)
4
- send(element_type(json).to_s.snake_case, json)
3
+ def parse_cfn(cfn_hash)
4
+ send(element_type(cfn_hash).to_s.snake_case, cfn_hash)
5
5
  end
6
6
 
7
7
  def intrinsic_function?(obj)
@@ -10,30 +10,30 @@ module CfnParser
10
10
  (obj.keys.first =~ /^Fn::/ or obj.keys.first == "Ref")
11
11
  end
12
12
 
13
- def array(json)
14
- return json.map { |a| parse_cfn_json(a) }
13
+ def array(cfn_hash)
14
+ return cfn_hash.map { |a| parse_cfn(a) }
15
15
  end
16
16
 
17
- def intrinsic_function(json)
18
- fn_name = json.keys.first
19
- values = json[fn_name]
20
- parameters = parse_cfn_json(values)
17
+ def intrinsic_function(cfn_hash)
18
+ fn_name = cfn_hash.keys.first
19
+ values = cfn_hash[fn_name]
20
+ parameters = parse_cfn(values)
21
21
  return IntrinsicFunction.new(fn_name, parameters)
22
22
  end
23
23
 
24
- def hash(json)
25
- return json.merge(json) { |k, v| parse_cfn_json(v) }
24
+ def hash(cfn_hash)
25
+ return cfn_hash.merge(cfn_hash) { |k, v| parse_cfn(v) }
26
26
  end
27
27
 
28
- def primitive(json)
29
- json
28
+ def primitive(cfn_hash)
29
+ cfn_hash
30
30
  end
31
31
 
32
32
  private
33
- def element_type(json)
34
- return :Array if json.instance_of?(Array)
35
- return :IntrinsicFunction if intrinsic_function?(json)
36
- return :Hash if json.instance_of?(Hash)
33
+ def element_type(cfn_hash)
34
+ return :Array if cfn_hash.instance_of?(Array)
35
+ return :IntrinsicFunction if intrinsic_function?(cfn_hash)
36
+ return :Hash if cfn_hash.instance_of?(Hash)
37
37
  return :Primitive
38
38
  end
39
39
  end
data/lib/cfndsl.erb CHANGED
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  CloudFormation do
2
3
  <% if @cfn.description %>
3
- Description(<%= @cfn.description.dump %>)
4
+ Description '<%= @cfn.description %>'
4
5
  <% end %>
5
6
  <% if @cfn.aws_template_format_version %>
6
- AWSTemplateFormatVersion(<%= @cfn.aws_template_format_version.dump %>)
7
+ AWSTemplateFormatVersion '<%= @cfn.aws_template_format_version %>'
7
8
  <% end %>
8
9
  <% # Parameters %>
9
10
  <%
@@ -11,44 +12,48 @@ CloudFormation do
11
12
  @cfn.parameters.each do |param|
12
13
  %>
13
14
 
14
- Parameter(<%= param.name.dump %>) do
15
+ Parameter('<%= param.name %>') do
15
16
  <% if param.description %>
16
- Description(<%= param.description.dump %>)
17
+ Description '<%= param.description %>'
17
18
  <% end %>
18
19
  <% if param.type %>
19
- Type(<%= param.type.dump %>)
20
+ Type '<%= param.type %>'
20
21
  <% end %>
21
22
  <% if param.default
22
23
  default_value = param.default
23
24
  if param.default.respond_to? :dump
24
- default_value = param.default.dump
25
+ default_value = '\'' + param.default + '\''
25
26
  end
26
27
  %>
27
- Default(<%= default_value %>)
28
+ Default <%= default_value %>
28
29
  <% end %>
29
30
  <% if param.allowed_values %>
30
- AllowedValues(<%= param.allowed_values.ai %>)
31
+ <% if param.allowed_values.kind_of?(Array) %>
32
+ AllowedValues <%= param.allowed_values.ai.gsub('"', '\'').gsub(' ', ' ').gsub(/^\]$/, ' ]').gsub(/^\}$/, ' }') %>
33
+ <% else %>
34
+ AllowedValues '<%= param.allowed_values.ai.gsub('"', '\'') %>'
35
+ <% end %>
31
36
  <% end %>
32
37
  <% if param.allowed_pattern %>
33
- AllowedPattern(<%= param.allowed_pattern.dump %>)
38
+ AllowedPattern '<%= param.allowed_pattern %>'
34
39
  <% end %>
35
40
  <% if param.no_echo %>
36
- NoEcho(<%= param.no_echo %>)
41
+ NoEcho <%= param.no_echo %>
37
42
  <% end %>
38
43
  <% if param.max_length %>
39
- MaxLength(<%= param.max_length.to_i %>)
44
+ MaxLength <%= param.max_length.to_i %>
40
45
  <% end %>
41
46
  <% if param.min_length %>
42
- MinLength(<%= param.min_length.to_i %>)
47
+ MinLength <%= param.min_length.to_i %>
43
48
  <% end %>
44
49
  <% if param.max_value %>
45
- MaxValue(<%= param.max_value %>)
50
+ MaxValue <%= param.max_value %>
46
51
  <% end %>
47
52
  <% if param.min_value %>
48
- MinValue(<%= param.min_value %>)
53
+ MinValue <%= param.min_value %>
49
54
  <% end %>
50
55
  <% if param.constraint_description %>
51
- ConstraintDescription(<%= param.constraint_description.dump %>)
56
+ ConstraintDescription '<%= param.constraint_description %>'
52
57
  <% end %>
53
58
  end
54
59
  <%
@@ -61,7 +66,7 @@ CloudFormation do
61
66
  @cfn.mappings.each do |map|
62
67
  %>
63
68
 
64
- Mapping(<%= map.name.dump %>, <%= map.values.ai %>)
69
+ Mapping '<%= map.name %>' '<%= map.values.ai.gsub('"', '\'') %>'
65
70
  <%
66
71
  end
67
72
  end
@@ -72,7 +77,7 @@ CloudFormation do
72
77
  @cfn.conditions.each do |cond|
73
78
  %>
74
79
 
75
- Condition(<%= cond.name.dump %>, <%= cond.evaluations.ai %>)
80
+ Condition('<%= cond.name %>', <%= cond.evaluations.ai.gsub('"', '\'').gsub(' ', ' ').gsub(/^\]/, ' ]').gsub(/^\)/, ' )') %>)
76
81
  <%
77
82
  end
78
83
  end
@@ -81,19 +86,23 @@ CloudFormation do
81
86
  <%
82
87
  @cfn.resources.each do |res|
83
88
  %>
84
-
85
- Resource(<%= res.name.dump %>) do
86
- Type("<%= res.type %>")
89
+ <%
90
+ resname = res.name
91
+ restype = res.type
92
+ restype = restype.split('::').delete_if{|i|i=='AWS'}
93
+ restype = restype.join('::').gsub('::', '_')
94
+ %>
95
+ <%= restype %>('<%= resname %>') do
87
96
  <%
88
97
  if res.creation_policy
89
98
  res.creation_policy.each_pair do |name, value|
90
99
  if value.instance_of? String
91
- value = value.dump
100
+ value = '\'' + value + '\''
92
101
  else
93
- value = value.ai
102
+ value = value.ai.gsub('"', '\'')
94
103
  end
95
104
  %>
96
- CreationPolicy(<%= name.dump%>, <%= value %>)
105
+ CreationPolicy('<%= name %>', <%= value %>)
97
106
  <%
98
107
  end
99
108
  end
@@ -101,14 +110,14 @@ CloudFormation do
101
110
  <%
102
111
  if res.deletion_policy
103
112
  %>
104
- DeletionPolicy(<%= res.deletion_policy.dump %>)
113
+ DeletionPolicy '<%= res.deletion_policy %>)'
105
114
  <%
106
115
  end
107
116
  %>
108
117
  <%
109
118
  if res.condition
110
119
  %>
111
- Condition(<%= res.condition.dump %>)
120
+ Condition '<%= res.condition %>'
112
121
  <%
113
122
  end
114
123
  %>
@@ -116,12 +125,12 @@ CloudFormation do
116
125
  if res.update_policy
117
126
  res.update_policy.each_pair do |name, value|
118
127
  if value.instance_of? String
119
- value = value.dump
128
+ value = "'#{value}'"
120
129
  else
121
- value = value.ai
130
+ value = value.ai.gsub('"', '\'').gsub('{', '').gsub('}', '').chop
122
131
  end
123
132
  %>
124
- UpdatePolicy(<%= name.dump %>,<%= value %>)
133
+ UpdatePolicy('<%= name %>',<%= value %>)
125
134
  <%
126
135
  end
127
136
  end
@@ -130,12 +139,12 @@ CloudFormation do
130
139
  if res.metadata
131
140
  res.metadata.each_pair do |name, value|
132
141
  if value.instance_of? String
133
- value = value.dump
142
+ value = value
134
143
  else
135
- value = value.ai
144
+ value = value.ai.gsub('"', '\'')
136
145
  end
137
146
  %>
138
- Metadata(<%= name.dump %> => <%= value %>)
147
+ Metadata '<%= name %>' '<%= value %>'
139
148
  <%
140
149
  end
141
150
  end
@@ -143,9 +152,9 @@ CloudFormation do
143
152
  <%
144
153
  if res.depends_on
145
154
  if res.depends_on.instance_of? String
146
- value = res.depends_on.dump
155
+ value = '\'' + res.depends_on + '\''
147
156
  else
148
- value = res.depends_on.ai
157
+ value = res.depends_on.ai.gsub('"', '\'')
149
158
  end
150
159
  %>
151
160
  DependsOn(<%= value %>)
@@ -155,14 +164,25 @@ CloudFormation do
155
164
  <%
156
165
  if res.properties
157
166
  res.properties.each_pair do |name, value|
167
+ is_value_string = true
158
168
  if value.instance_of? String
159
- value = value.dump
169
+ value = '\'' + value + '\''
160
170
  else
161
- value = value.ai
171
+ is_value_string = false
172
+ value = value.ai.gsub('"', '\'')
173
+ .gsub(' ', ' ')
174
+ .gsub(/^\]$/, ' ]')
175
+ .gsub(/^\}$/, ' }')
176
+ .gsub(/[ ]+=>/, ' =>')
162
177
  end
178
+
179
+ if is_value_string
163
180
  %>
164
- Property(<%= name.dump %>, <%= value %>)
181
+ <%= name %> <%= value %>
182
+ <% else %>
183
+ <%= name %>(<%= value %>)
165
184
  <%
185
+ end
166
186
  end
167
187
  end
168
188
  %>
@@ -176,30 +196,30 @@ CloudFormation do
176
196
  @cfn.outputs.each do |out|
177
197
  %>
178
198
 
179
- Output(<%= out.name.dump %>) do
199
+ Output('<%= out.name %>') do
180
200
  <%
181
201
  if out.condition
182
202
  %>
183
- Condition(<%= out.condition.dump %>)
203
+ Condition('<%= out.condition %>')
184
204
  <%
185
205
  end
186
206
  %>
187
207
  <%
188
208
  if out.description
189
209
  %>
190
- Description(<%= out.description.dump %>)
210
+ Description '<%= out.description %>'
191
211
  <%
192
212
  end
193
213
  %>
194
214
  <%
195
215
  if out.value
196
216
  if out.value.instance_of? String
197
- value = out.value.dump
217
+ value = '\'' + out.value + '\''
198
218
  else
199
- value = out.value.ai
219
+ value = out.value.ai.gsub('"', '\'')
200
220
  end
201
221
  %>
202
- Value(<%= value %>)
222
+ Value <%= value %>
203
223
  <%
204
224
  end
205
225
  %>
@@ -1,4 +1,5 @@
1
1
  require 'extlib'
2
+ require 'psych'
2
3
  class CloudFormation
3
4
 
4
5
  ELEMENTS = [
@@ -15,24 +16,29 @@ class CloudFormation
15
16
 
16
17
  attr_reader(*ELEMENTS)
17
18
 
18
- def initialize(json)
19
+ def initialize(cfn_string)
20
+ cfn_hash = Psych.safe_load(cfn_string)
19
21
  ELEMENTS.each do |e|
20
22
  key = e.to_s.camel_case
21
23
  if key =~ /^Aws/
22
24
  key = key.sub(/^Aws/, "AWS")
23
25
  end
24
26
 
25
- if json[key]
26
- attr = parse_element(e, json[key])
27
+ if cfn_hash[key]
28
+ attr = parse_element(e, cfn_hash[key])
27
29
  instance_variable_set("@" + e.to_s, attr)
28
30
  end
29
31
  end
32
+ rescue Psych::DisallowedClass => error
33
+ raise YamlValueTypeError.new "Unsupported YAML value type found: only scalar values supported. #{error.message}"
34
+ rescue Psych::Exception => error
35
+ raise YamlSyntaxError.new "Syntax error in template. #{error.message}"
30
36
  end
31
37
 
32
38
  private
33
- def parse_element(elm_name, json)
39
+ def parse_element(elm_name, cfn_hash)
34
40
  function = parser(elm_name)
35
- send(function, elm_name, json)
41
+ send(function, elm_name, cfn_hash)
36
42
  end
37
43
 
38
44
  def parser(name)
@@ -46,27 +52,27 @@ class CloudFormation
46
52
  end
47
53
  end
48
54
 
49
- def simple_parser(name, json)
50
- json
55
+ def simple_parser(name, cfn_hash)
56
+ cfn_hash
51
57
  end
52
58
 
53
- def complex_parser(name, json)
59
+ def complex_parser(name, cfn_hash)
54
60
  elms = []
55
61
  case name
56
62
  when :metadata
57
- json.each_pair { |k, v| elms << Metadata.new(k, v) }
63
+ cfn_hash.each_pair { |k, v| elms << Metadata.new(k, v) }
58
64
  when :rules
59
- json.each_pair { |k, v| elms << Rules.new(k, v) }
65
+ cfn_hash.each_pair { |k, v| elms << Rules.new(k, v) }
60
66
  when :parameters
61
- json.each_pair { |k, v| elms << Parameter.new(k, v) }
67
+ cfn_hash.each_pair { |k, v| elms << Parameter.new(k, v) }
62
68
  when :resources
63
- json.each_pair { |k, v| elms << Resource.new(k, v) }
69
+ cfn_hash.each_pair { |k, v| elms << Resource.new(k, v) }
64
70
  when :outputs
65
- json.each_pair { |k, v| elms << Output.new(k, v) }
71
+ cfn_hash.each_pair { |k, v| elms << Output.new(k, v) }
66
72
  when :mappings
67
- json.each_pair { |k, v| elms << Mapping.new(k, v) }
73
+ cfn_hash.each_pair { |k, v| elms << Mapping.new(k, v) }
68
74
  when :conditions
69
- json.each_pair { |k, v| elms << Condition.new(k, v) }
75
+ cfn_hash.each_pair { |k, v| elms << Condition.new(k, v) }
70
76
  end
71
77
  return elms
72
78
  end
data/lib/condition.rb CHANGED
@@ -4,6 +4,6 @@ class Condition
4
4
 
5
5
  def initialize(name, eval)
6
6
  @name = name
7
- @evaluations = parse_cfn_json(eval)
7
+ @evaluations = parse_cfn(eval)
8
8
  end
9
9
  end
data/lib/error.rb ADDED
@@ -0,0 +1,11 @@
1
+ class YamlSyntaxError < StandardError
2
+ def initialize(msg)
3
+ super
4
+ end
5
+ end
6
+
7
+ class YamlValueTypeError < StandardError
8
+ def initialize(msg)
9
+ super
10
+ end
11
+ end
@@ -20,11 +20,11 @@ class IntrinsicFunction
20
20
  private
21
21
  def fn_base64
22
22
  if @parameters.instance_of? String
23
- value = '"' + @parameters.gsub('"'){'\\"'} + '"'
23
+ value = "'#{@parameters}'"
24
24
  else
25
25
  value = @parameters.ai
26
26
  end
27
- return "FnBase64(#{value})"
27
+ return "FnBase64 '#{value}'"
28
28
  end
29
29
 
30
30
  def fn_select
@@ -32,7 +32,7 @@ class IntrinsicFunction
32
32
  end
33
33
 
34
34
  def ref
35
- return "Ref(\"#{@parameters.gsub('"'){'\\"'}}\")"
35
+ return "Ref('#{@parameters.gsub('\''){'\\\''}}')"
36
36
  end
37
37
 
38
38
  def fn_and
@@ -41,13 +41,13 @@ class IntrinsicFunction
41
41
 
42
42
  def fn_equals
43
43
  if @parameters[0].instance_of? String
44
- arg1 = '"' + @parameters[0].gsub('"'){'\\"'} + '"'
44
+ arg1 = '\'' + @parameters[0].gsub('\''){'\\\''} + '\''
45
45
  else
46
46
  arg1 = @parameters[0].ai
47
47
  end
48
48
 
49
49
  if @parameters[1].instance_of? String
50
- arg2 = '"' + @parameters[1].gsub('"'){'\\"'} + '"'
50
+ arg2 = '\'' + @parameters[1].gsub('\''){'\\\''} + '\''
51
51
  else
52
52
  arg2 = @parameters[1].ai
53
53
  end
@@ -56,15 +56,15 @@ class IntrinsicFunction
56
56
  end
57
57
 
58
58
  def fn_if
59
- cond_name = '"' + @parameters[0].gsub('"'){'\\"'} + '"'
59
+ cond_name = '\'' + @parameters[0].gsub('\''){'\\\''} + '\''
60
60
  if @parameters[1].instance_of? String
61
- true_value = '"' + @parameters[1].gsub('"'){'\\"'} + '"'
61
+ true_value = '\'' + @parameters[1].gsub('\''){'\\\''} + '\''
62
62
  else
63
63
  true_value = @parameters[1].ai
64
64
  end
65
65
 
66
66
  if @parameters[2].instance_of? String
67
- false_value = '"' + @parameters[2].gsub('"'){'\\"'} + '"'
67
+ false_value = '\'' + @parameters[2].gsub('\''){'\\\''} + '\''
68
68
  else
69
69
  false_value = @parameters[2].ai
70
70
  end
@@ -80,16 +80,16 @@ class IntrinsicFunction
80
80
  end
81
81
 
82
82
  def fn_find_in_map
83
- map_name = '"' + @parameters[0] + '"'
83
+ map_name = '\'' + @parameters[0] + '\''
84
84
 
85
85
  if @parameters[1].instance_of? String
86
- top_level_key = '"' + @parameters[1] + '"'
86
+ top_level_key = '\'' + @parameters[1] + '\''
87
87
  else
88
88
  top_level_key = @parameters[1].ai
89
89
  end
90
90
 
91
91
  if @parameters[2].instance_of? String
92
- sec_level_key = '"' + @parameters[2] + '"'
92
+ sec_level_key = '\'' + @parameters[2] + '\''
93
93
  else
94
94
  sec_level_key = @parameters[2].ai
95
95
  end
@@ -98,26 +98,36 @@ class IntrinsicFunction
98
98
  end
99
99
 
100
100
  def fn_get_att
101
- resource_name = '"' + @parameters[0] + '"'
102
- attr_name = '"' + @parameters[1] + '"'
101
+ resource_name = '\'' + @parameters[0] + '\''
102
+ attr_name = '\'' + @parameters[1] + '\''
103
103
  return "FnGetAtt(#{resource_name}, #{attr_name})"
104
104
  end
105
105
 
106
106
  def fn_join
107
- seperator = '"' + @parameters[0].gsub('"'){'\\"'} + '"'
107
+ seperator = '\'' + @parameters[0].gsub('\''){'\\\''} + '\''
108
108
  values = @parameters[1].ai
109
109
  return "FnJoin(#{seperator}, #{values})"
110
110
  end
111
111
 
112
112
  def fn_sub
113
- origin = '"' + @parameters[0].gsub('"'){'\\"'} + '"'
114
- values = @parameters[1].ai
115
- return "FnSub(#{origin}, #{values})"
113
+ if @parameters.instance_of? String
114
+ value = '"' + @parameters.gsub('"'){'\\"'} + '"'
115
+ return "FnSub(#{value})"
116
+ else
117
+ origin = '"' + @parameters[0].gsub('"'){'\\"'} + '"'
118
+ values = @parameters[1].ai
119
+ return "FnSub(#{origin}, #{values})"
120
+ end
116
121
  end
117
122
 
118
123
  def fn_split
119
124
  delimiter = '"' + @parameters[0].gsub('"'){'\\"'} + '"'
120
- value = '"' + @parameters[1] + '"'
125
+ # value = '"' + @parameters[1] + '"'
126
+ if @parameters[1].instance_of? String
127
+ value = '"' + @parameters[1] + '"'
128
+ else
129
+ value = @parameters[1].ai
130
+ end
121
131
  return "FnSplit(#{delimiter}, #{value})"
122
132
  end
123
133
 
@@ -128,7 +138,7 @@ class IntrinsicFunction
128
138
 
129
139
  def fn_get_a_zs
130
140
  if @parameters.instance_of? String
131
- value = '"' + @parameters.gsub('"'){'\\"'} + '"'
141
+ value = '\'' + @parameters.gsub('\''){'\\\''} + '\''
132
142
  else
133
143
  value = @parameters.ai
134
144
  end
@@ -136,5 +146,8 @@ class IntrinsicFunction
136
146
  return "FnGetAZs(#{value})"
137
147
  end
138
148
 
149
+ def fn_cidr
150
+ return "FnCidr(#{@parameters.ai})"
151
+ end
139
152
 
140
153
  end
data/lib/mapping.rb CHANGED
@@ -4,6 +4,6 @@ class Mapping
4
4
 
5
5
  def initialize(name, values)
6
6
  @name = name
7
- @values = parse_cfn_json(values)
7
+ @values = parse_cfn(values)
8
8
  end
9
9
  end
data/lib/metadata.rb CHANGED
@@ -4,6 +4,6 @@ class Metadata
4
4
 
5
5
  def initialize(name, values)
6
6
  @name = name
7
- @values = parse_cfn_json(values)
7
+ @values = parse_cfn(values)
8
8
  end
9
9
  end
data/lib/output.rb CHANGED
@@ -9,16 +9,16 @@ class Output
9
9
 
10
10
  attr_reader(:name, *ATTRIBUTES)
11
11
 
12
- def initialize(name, json)
12
+ def initialize(name, cfn_hash)
13
13
  @name = name
14
- ATTRIBUTES.each {|a| attribute(a, json)}
14
+ ATTRIBUTES.each {|a| attribute(a, cfn_hash)}
15
15
  end
16
16
 
17
17
  private
18
- def attribute(name, json)
18
+ def attribute(name, cfn_hash)
19
19
  key = name.to_s.camel_case
20
- if json[key]
21
- value = parse_cfn_json(json[key])
20
+ if cfn_hash[key]
21
+ value = parse_cfn(cfn_hash[key])
22
22
  instance_variable_set("@" + name.to_s, value)
23
23
  end
24
24
  end
data/lib/parameter.rb CHANGED
@@ -17,11 +17,11 @@ class Parameter
17
17
 
18
18
  attr_reader(*ELEMENTS)
19
19
 
20
- def initialize(name, json)
20
+ def initialize(name, cfn_hash)
21
21
  @name = name
22
22
  ELEMENTS.each do |e|
23
23
  key_name = e.to_s.camel_case
24
- instance_variable_set('@' + e.to_s, json[key_name]) if json[key_name]
24
+ instance_variable_set('@' + e.to_s, cfn_hash[key_name]) if cfn_hash[key_name]
25
25
  end
26
26
  end
27
27
  end
data/lib/resource.rb CHANGED
@@ -14,10 +14,10 @@ class Resource
14
14
 
15
15
  attr_reader(:name, *ATTRIBUTES)
16
16
 
17
- def initialize(name, json)
17
+ def initialize(name, cfn_hash)
18
18
  @name = name
19
19
  ATTRIBUTES.each do |a|
20
- send(attribute_type(a), json, a.to_s)
20
+ send(attribute_type(a), cfn_hash, a.to_s)
21
21
  end
22
22
  end
23
23
 
@@ -37,18 +37,18 @@ class Resource
37
37
  return type
38
38
  end
39
39
 
40
- def complex_attribute(json, name)
41
- if json[name.camel_case]
42
- values = json[name.camel_case].merge do |k, v|
43
- parse_cfn_json(v)
40
+ def complex_attribute(cfn_hash, name)
41
+ if cfn_hash[name.camel_case]
42
+ values = cfn_hash[name.camel_case].merge do |k, v|
43
+ parse_cfn(v)
44
44
  end
45
45
  instance_variable_set('@' + name, values)
46
46
  end
47
47
  end
48
48
 
49
- def basic_attribute(json, name)
50
- if json[name.camel_case]
51
- instance_variable_set('@' + name, parse_cfn_json(json[name.camel_case]))
49
+ def basic_attribute(cfn_hash, name)
50
+ if cfn_hash[name.camel_case]
51
+ instance_variable_set('@' + name, parse_cfn(cfn_hash[name.camel_case]))
52
52
  end
53
53
  end
54
54
  end
data/lib/rules.rb CHANGED
@@ -4,6 +4,6 @@ class Rules
4
4
 
5
5
  def initialize(name, values)
6
6
  @name = name
7
- @values = parse_cfn_json(values)
7
+ @values = parse_cfn(values)
8
8
  end
9
9
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Cfn2dsl
2
- VERSION = "0.3.1"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfn2dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Yung
8
8
  - Valen Gunawan
9
+ - Cam Maxwell
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2017-07-06 00:00:00.000000000 Z
13
+ date: 2019-08-19 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: extlib
@@ -31,14 +32,14 @@ dependencies:
31
32
  requirements:
32
33
  - - '='
33
34
  - !ruby/object:Gem::Version
34
- version: 1.7.0
35
+ version: 1.8.0
35
36
  type: :runtime
36
37
  prerelease: false
37
38
  version_requirements: !ruby/object:Gem::Requirement
38
39
  requirements:
39
40
  - - '='
40
41
  - !ruby/object:Gem::Version
41
- version: 1.7.0
42
+ version: 1.8.0
42
43
  - !ruby/object:Gem::Dependency
43
44
  name: erubis
44
45
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +54,7 @@ dependencies:
53
54
  - - '='
54
55
  - !ruby/object:Gem::Version
55
56
  version: 2.7.0
56
- description: A tool to convert CloudFormation JSON template into a Ruby DSL cfndsl
57
+ description: A tool to convert CloudFormation templates into a Ruby DSL cfndsl
57
58
  email: jwrong@gmail.com
58
59
  executables:
59
60
  - cfn2dsl
@@ -66,6 +67,7 @@ files:
66
67
  - lib/cfndsl.erb
67
68
  - lib/cloudformation.rb
68
69
  - lib/condition.rb
70
+ - lib/error.rb
69
71
  - lib/intrinsic_function.rb
70
72
  - lib/mapping.rb
71
73
  - lib/metadata.rb
@@ -87,7 +89,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
87
89
  requirements:
88
90
  - - ">="
89
91
  - !ruby/object:Gem::Version
90
- version: 2.3.0
92
+ version: 2.4.4
91
93
  required_rubygems_version: !ruby/object:Gem::Requirement
92
94
  requirements:
93
95
  - - ">="
@@ -95,8 +97,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
97
  version: '0'
96
98
  requirements: []
97
99
  rubyforge_project:
98
- rubygems_version: 2.6.12
100
+ rubygems_version: 2.7.8
99
101
  signing_key:
100
102
  specification_version: 4
101
- summary: A tool to convert CloudFormation JSON template into a Ruby DSL cfndsl
103
+ summary: A tool to convert CloudFormation templates into a Ruby DSL cfndsl
102
104
  test_files: []