cfndsl 0.0.11 → 0.0.12
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.
- data/lib/cfndsl/CloudFormationTemplate.rb +39 -30
- data/lib/cfndsl/JSONable.rb +4 -19
- data/lib/cfndsl/Resources.rb +8 -0
- data/lib/cfndsl/Types.rb +21 -16
- data/lib/cfndsl/module.rb +18 -13
- data/lib/cfndsl/names.rb +12 -0
- metadata +3 -2
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cfndsl/JSONable'
|
2
|
+
require 'cfndsl/names'
|
2
3
|
|
3
4
|
module CfnDsl
|
4
5
|
class CloudFormationTemplate < JSONable
|
@@ -75,15 +76,18 @@ module CfnDsl
|
|
75
76
|
type["Properties"].each_pair do |pname, ptype|
|
76
77
|
if( ptype.instance_of? String )
|
77
78
|
create_klass = CfnDsl::Types.const_get( ptype );
|
79
|
+
|
78
80
|
klass.class_eval do
|
79
|
-
|
80
|
-
|
81
|
-
values.
|
81
|
+
CfnDsl::methodNames(pname) do |method|
|
82
|
+
define_method(method) do |*values, &block|
|
83
|
+
if( values.length <1 ) then
|
84
|
+
values.push create_klass.new
|
85
|
+
end
|
86
|
+
@Properties ||= {}
|
87
|
+
@Properties[pname] ||= CfnDsl::PropertyDefinition.new( *values )
|
88
|
+
@Properties[pname].value.instance_eval &block if block
|
89
|
+
@Properties[pname].value
|
82
90
|
end
|
83
|
-
@Properties ||= {}
|
84
|
-
@Properties[pname] ||= CfnDsl::PropertyDefinition.new( *values )
|
85
|
-
@Properties[pname].value.instance_eval &block if block
|
86
|
-
@Properties[pname].value
|
87
91
|
end
|
88
92
|
end
|
89
93
|
else
|
@@ -91,27 +95,30 @@ module CfnDsl
|
|
91
95
|
sing_name = CfnDsl::Plurals.singularize( pname )
|
92
96
|
create_klass = CfnDsl::Types.const_get( ptype[0] )
|
93
97
|
klass.class_eval do
|
94
|
-
|
95
|
-
|
96
|
-
values.
|
98
|
+
CfnDsl::methodNames(pname) do |method|
|
99
|
+
define_method(method) do |*values, &block|
|
100
|
+
if( values.length < 1 ) then
|
101
|
+
values.push []
|
102
|
+
end
|
103
|
+
@Properties ||= {}
|
104
|
+
@Properties[pname] ||= PropertyDefinition.new( *values )
|
105
|
+
@Properties[pname].value.instance_eval &block if block
|
106
|
+
@Properties[pname].value
|
97
107
|
end
|
98
|
-
@Properties ||= {}
|
99
|
-
@Properties[pname] ||= PropertyDefinition.new( *values )
|
100
|
-
@Properties[pname].value.instance_eval &block if block
|
101
|
-
@Properties[pname].value
|
102
108
|
end
|
103
109
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
value
|
110
|
+
CfnDsl::methodNames(sing_name) do |method|
|
111
|
+
define_method(method) do |value=nil, &block|
|
112
|
+
@Properties ||= {}
|
113
|
+
@Properties[pname] ||= PropertyDefinition.new( [] )
|
114
|
+
if( !value ) then
|
115
|
+
value = create_klass.new
|
116
|
+
end
|
117
|
+
@Properties[pname].value.push value
|
118
|
+
value.instance_eval &block if block
|
119
|
+
value
|
109
120
|
end
|
110
|
-
@Properties[pname].value.push value
|
111
|
-
value.instance_eval &block if block
|
112
|
-
value
|
113
121
|
end
|
114
|
-
|
115
122
|
end
|
116
123
|
end
|
117
124
|
|
@@ -136,13 +143,15 @@ module CfnDsl
|
|
136
143
|
names.each_pair do |typename,type|
|
137
144
|
if(type) then
|
138
145
|
class_eval do
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
+
CfnDsl::methodNames(typename) do |method|
|
147
|
+
define_method(method) do |name,*values,&block|
|
148
|
+
name = name.to_s
|
149
|
+
@Resources ||= {}
|
150
|
+
resource = @Resources[name] ||= type.new(*values)
|
151
|
+
resource.instance_eval &block if block
|
152
|
+
resource.instance_variable_set( "@Type", nametypes[typename] )
|
153
|
+
resource
|
154
|
+
end
|
146
155
|
end
|
147
156
|
end
|
148
157
|
end
|
data/lib/cfndsl/JSONable.rb
CHANGED
@@ -2,15 +2,10 @@ require 'cfndsl/Errors'
|
|
2
2
|
require 'cfndsl/RefCheck'
|
3
3
|
|
4
4
|
module CfnDsl
|
5
|
-
module Functions
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
# Equivalent to the CloudFormation template built in tag object
|
10
|
-
TagDefinition.new(key, value)
|
11
|
-
end
|
12
|
-
|
13
|
-
|
5
|
+
module Functions
|
6
|
+
##
|
7
|
+
# These functions are available anywhere inside
|
8
|
+
# a block for a JSONable object.
|
14
9
|
def Ref(value)
|
15
10
|
##
|
16
11
|
# Equivalent to the CloudFormation template built in function Ref
|
@@ -174,7 +169,6 @@ module CfnDsl
|
|
174
169
|
end
|
175
170
|
end
|
176
171
|
|
177
|
-
|
178
172
|
class RefDefinition < JSONable
|
179
173
|
##
|
180
174
|
# Handles the Ref objects
|
@@ -186,14 +180,5 @@ module CfnDsl
|
|
186
180
|
[@Ref]
|
187
181
|
end
|
188
182
|
end
|
189
|
-
|
190
|
-
class TagDefinition < JSONable
|
191
|
-
#
|
192
|
-
# Handles the Tag objects
|
193
|
-
def initialize( key, value )
|
194
|
-
@Key = key
|
195
|
-
@Value = value
|
196
|
-
end
|
197
|
-
end
|
198
183
|
|
199
184
|
end
|
data/lib/cfndsl/Resources.rb
CHANGED
@@ -9,6 +9,14 @@ module CfnDsl
|
|
9
9
|
dsl_attr_setter :Type, :DependsOn, :DeletionPolicy
|
10
10
|
dsl_content_object :Property, :Metadata
|
11
11
|
|
12
|
+
def addTag(name, value, propagate=nil)
|
13
|
+
self.send(:Tag) {
|
14
|
+
Key name
|
15
|
+
Value value
|
16
|
+
PropagateAtLaunch propagate unless propagate.nil?
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
12
20
|
def get_references()
|
13
21
|
refs = []
|
14
22
|
if @DependsOn then
|
data/lib/cfndsl/Types.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'yaml'
|
2
2
|
require 'cfndsl/JSONable'
|
3
3
|
require 'cfndsl/Plurals'
|
4
|
+
require 'cfndsl/names'
|
4
5
|
|
5
6
|
module CfnDsl
|
6
7
|
module Types
|
@@ -63,23 +64,25 @@ module CfnDsl
|
|
63
64
|
if( attr_type.kind_of? Array ) then
|
64
65
|
klass = CfnDsl::Types.const_get( attr_type[0] )
|
65
66
|
variable = "@#{attr_name}".to_sym
|
67
|
+
|
66
68
|
method = CfnDsl::Plurals::singularize(attr_name)
|
67
69
|
methods = attr_name
|
68
70
|
|
69
71
|
type.class_eval do
|
70
|
-
|
71
|
-
value
|
72
|
-
|
73
|
-
|
72
|
+
CfnDsl::methodNames(method) do |method_name|
|
73
|
+
define_method(method_name) do | value=nil, *rest, &block|
|
74
|
+
value ||= klass.new
|
75
|
+
x = instance_variable_get( variable )
|
76
|
+
if( !x ) then
|
74
77
|
x = instance_variable_set( variable, [] )
|
78
|
+
end
|
79
|
+
x.push value
|
80
|
+
value.instance_eval &block if block
|
81
|
+
value
|
75
82
|
end
|
76
|
-
x.push value
|
77
|
-
value.instance_eval &block if block
|
78
|
-
value
|
79
83
|
end
|
80
|
-
|
81
|
-
|
82
|
-
define_method(methods) do | value, &block |
|
84
|
+
CfnDsl::methodNames(methods) do |methods_name|
|
85
|
+
define_method(methods_name) do | value, &block |
|
83
86
|
x = instance_variable_get( variable )
|
84
87
|
if( !x ) then
|
85
88
|
x = instance_variable_set( variable, [] )
|
@@ -98,13 +101,15 @@ module CfnDsl
|
|
98
101
|
else
|
99
102
|
klass = CfnDsl::Types.const_get( attr_type );
|
100
103
|
variable = "@#{attr_name}".to_sym
|
101
|
-
|
104
|
+
|
102
105
|
type.class_eval do
|
103
|
-
|
104
|
-
value
|
105
|
-
|
106
|
-
|
107
|
-
|
106
|
+
CfnDsl::methodNames(attr_name) do |method|
|
107
|
+
define_method(method) do | value=nil, *rest, &block |
|
108
|
+
value ||= klass.new
|
109
|
+
instance_variable_set( variable, value )
|
110
|
+
value.instance_eval &block if block
|
111
|
+
value
|
112
|
+
end
|
108
113
|
end
|
109
114
|
end
|
110
115
|
end
|
data/lib/cfndsl/module.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cfndsl/Plurals'
|
2
|
+
require 'cfndsl/names'
|
2
3
|
class Module
|
3
4
|
private
|
4
5
|
def dsl_attr_setter(*symbols)
|
@@ -18,8 +19,10 @@ class Module
|
|
18
19
|
#
|
19
20
|
symbols.each do |symbol|
|
20
21
|
class_eval do
|
21
|
-
|
22
|
-
|
22
|
+
CfnDsl::methodNames(symbol) do |method|
|
23
|
+
define_method(method) do |value|
|
24
|
+
instance_variable_set( "@#{symbol}", value)
|
25
|
+
end
|
23
26
|
end
|
24
27
|
end
|
25
28
|
end
|
@@ -53,17 +56,19 @@ class Module
|
|
53
56
|
pluralvar = "@#{plural}".to_sym
|
54
57
|
definition_class = CfnDsl.const_get( "#{symbol}Definition" )
|
55
58
|
class_eval do
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
hash
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
59
|
+
CfnDsl::methodNames(symbol) do |method|
|
60
|
+
define_method(method) do |name,*values,&block|
|
61
|
+
name = name.to_s
|
62
|
+
hash = instance_variable_get( pluralvar )
|
63
|
+
if( ! hash ) then
|
64
|
+
hash = {}
|
65
|
+
instance_variable_set( pluralvar, hash )
|
66
|
+
end
|
67
|
+
hash[name] ||= definition_class.new(*values)
|
68
|
+
hash[name].instance_eval &block if block
|
69
|
+
return hash[name]
|
70
|
+
end
|
71
|
+
end
|
67
72
|
end
|
68
73
|
end
|
69
74
|
end
|
data/lib/cfndsl/names.rb
ADDED
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.0.
|
4
|
+
version: 0.0.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -32,6 +32,7 @@ files:
|
|
32
32
|
- lib/cfndsl/Outputs.rb
|
33
33
|
- lib/cfndsl/Errors.rb
|
34
34
|
- lib/cfndsl/Plurals.rb
|
35
|
+
- lib/cfndsl/names.rb
|
35
36
|
- lib/cfndsl/CloudFormationTemplate.rb
|
36
37
|
- bin/cfndsl
|
37
38
|
homepage: https://github.com/howech/cfndsl
|
@@ -54,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
54
55
|
version: '0'
|
55
56
|
requirements: []
|
56
57
|
rubyforge_project:
|
57
|
-
rubygems_version: 1.8.
|
58
|
+
rubygems_version: 1.8.11
|
58
59
|
signing_key:
|
59
60
|
specification_version: 3
|
60
61
|
summary: AWS Cloudformation DSL
|