kumogata 0.1.9 → 0.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/README.md +7 -6
- data/lib/kumogata/client.rb +0 -29
- data/lib/kumogata/ext/string_ext.rb +30 -0
- data/lib/kumogata/version.rb +1 -1
- data/spec/kumogata_convert_spec.rb +6 -6
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6dba7edb943ddc60c3ba51b2280ab75963303884
|
4
|
+
data.tar.gz: 71da06088335d8104b011df5771a380a6de9f1b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f37f6ebd3c5ff220a829e48b99eb1f5c8b506879449876dcbcf9f961324b41dedc3b1f4c925b4fe672469f98bb568d04341c6367d66dea1d1e33a72e46fe781
|
7
|
+
data.tar.gz: c1d201f490a069ff328464f796cce66516b8e2159027248dbff67c2942033522108b22c21601523bc757c588a4ae1d044e463040a30449bed78648f458b16964
|
data/README.md
CHANGED
@@ -5,8 +5,8 @@
|
|
5
5
|
|
6
6
|
Kumogata is a tool for [AWS CloudFormation](https://aws.amazon.com/cloudformation/).
|
7
7
|
|
8
|
-
[](http://badge.fury.io/rb/kumogata)
|
9
|
+
[](https://drone.io/github.com/winebarrel/kumogata/latest)
|
10
10
|
|
11
11
|
It can define a template in Ruby DSL, such as:
|
12
12
|
|
@@ -115,18 +115,19 @@ JSON template can be converted to Ruby template.
|
|
115
115
|
* `Fn::GetAtt` => `Fn__GetAtt`
|
116
116
|
* `_{ ... }` is convered to Hash
|
117
117
|
* `SecurityGroups [_{Ref "WebServerSecurityGroup"}]` => `{"SecurityGroups": [{"Ref": "WebServerSecurityGroup"}]}`
|
118
|
-
* ~~_user_data() creates Base64-encoded UserData~~
|
119
|
-
* `_user_data()` has been removed
|
120
118
|
* `_path()` creates Hash that has a key of path
|
121
119
|
* `_path("/etc/passwd-s3fs") { content "..." }` => `{"/etc/passwd-s3fs": {"content": "..."}}`
|
120
|
+
* ~~_user_data() creates Base64-encoded UserData~~
|
121
|
+
* `_user_data()` has been removed
|
122
|
+
* `_join()` has been removed
|
122
123
|
|
123
|
-
###
|
124
|
+
### String#fn_joine()
|
124
125
|
|
125
126
|
Ruby templates will be converted as follows by `_join()`:
|
126
127
|
|
127
128
|
```ruby
|
128
129
|
UserData do
|
129
|
-
Fn__Base64
|
130
|
+
Fn__Base64 (<<-EOS).fn_join
|
130
131
|
#!/bin/bash
|
131
132
|
/opt/aws/bin/cfn-init -s <%= Ref "AWS::StackName" %> -r myEC2Instance --region <%= Ref "AWS::Region" %>
|
132
133
|
EOS
|
data/lib/kumogata/client.rb
CHANGED
@@ -147,35 +147,6 @@ class Kumogata::Client
|
|
147
147
|
|
148
148
|
def define_template_func(scope)
|
149
149
|
scope.instance_eval(<<-'EOS')
|
150
|
-
def _join(data, options = {})
|
151
|
-
options = {
|
152
|
-
:undent => true,
|
153
|
-
:trim_mode => nil,
|
154
|
-
}.merge(options)
|
155
|
-
|
156
|
-
data = data.undent if options[:undent]
|
157
|
-
|
158
|
-
@__refs__ = []
|
159
|
-
def Ref(value); @__refs__ << {"Ref" => value}; "\0"; end
|
160
|
-
data = ERB.new(data, nil, options[:trim_mode]).result(binding)
|
161
|
-
undef Ref
|
162
|
-
|
163
|
-
data = data.split("\0").zip(@__refs__)
|
164
|
-
@__refs__ = nil
|
165
|
-
|
166
|
-
data = data.flatten.select {|i| not i.nil? }.map {|i|
|
167
|
-
if i.kind_of?(String)
|
168
|
-
StringIO.new(i).to_a
|
169
|
-
else
|
170
|
-
i
|
171
|
-
end
|
172
|
-
}.flatten
|
173
|
-
|
174
|
-
return {
|
175
|
-
'Fn::Join' => ['', data]
|
176
|
-
}
|
177
|
-
end
|
178
|
-
|
179
150
|
def _path(path, value = nil, &block)
|
180
151
|
if block
|
181
152
|
value = Dslh::ScopeBlock.nest(binding, 'block')
|
@@ -33,4 +33,34 @@ class String
|
|
33
33
|
min_space_num = self.split("\n").delete_if{|s| s=~ /^\s*$/ }.map{|s| s[/^\s+/].length }.min
|
34
34
|
gsub(/^[ \t]{,#{min_space_num}}/, '')
|
35
35
|
end
|
36
|
+
|
37
|
+
def fn_join(options = {})
|
38
|
+
options = {
|
39
|
+
:undent => true,
|
40
|
+
:trim_mode => nil,
|
41
|
+
}.merge(options)
|
42
|
+
|
43
|
+
data = self.dup
|
44
|
+
data = data.undent if options[:undent]
|
45
|
+
trim_mode = options[:trim_mode]
|
46
|
+
null = "\0"
|
47
|
+
|
48
|
+
data = Object.new.instance_eval(<<-EOS)
|
49
|
+
@__refs__ = []
|
50
|
+
def Ref(value); @__refs__ << {'Ref' => value}; #{null.inspect}; end
|
51
|
+
ERB.new(#{data.inspect}, nil, #{trim_mode.inspect}).result(binding).split(#{null.inspect}).zip(@__refs__)
|
52
|
+
EOS
|
53
|
+
|
54
|
+
data = data.flatten.select {|i| not i.nil? }.map {|i|
|
55
|
+
if i.kind_of?(String)
|
56
|
+
StringIO.new(i).to_a
|
57
|
+
else
|
58
|
+
i
|
59
|
+
end
|
60
|
+
}.flatten
|
61
|
+
|
62
|
+
return {
|
63
|
+
'Fn::Join' => ['', data]
|
64
|
+
}
|
65
|
+
end
|
36
66
|
end
|
data/lib/kumogata/version.rb
CHANGED
@@ -94,7 +94,7 @@ end
|
|
94
94
|
EOS
|
95
95
|
end
|
96
96
|
|
97
|
-
it 'convert Ruby template to JSON template with
|
97
|
+
it 'convert Ruby template to JSON template with fn_join()' do
|
98
98
|
template = <<-TEMPLATE
|
99
99
|
Parameters do
|
100
100
|
Password do
|
@@ -111,7 +111,7 @@ Resources do
|
|
111
111
|
InstanceType "t1.micro"
|
112
112
|
|
113
113
|
UserData do
|
114
|
-
Fn__Base64
|
114
|
+
Fn__Base64 (<<-EOS).fn_join
|
115
115
|
#!/bin/bash
|
116
116
|
echo START | logger
|
117
117
|
/opt/aws/bin/cfn-init -s <%= Ref "AWS::StackName" %> -r myEC2Instance --region <%= Ref "AWS::Region" %>
|
@@ -139,7 +139,7 @@ Resources do
|
|
139
139
|
|
140
140
|
commands do
|
141
141
|
any_name do
|
142
|
-
command
|
142
|
+
command (<<-EOS).fn_join
|
143
143
|
echo <%= Ref "Password" %> > /tmp/my-password
|
144
144
|
EOS
|
145
145
|
end
|
@@ -233,7 +233,7 @@ end
|
|
233
233
|
EOS
|
234
234
|
end
|
235
235
|
|
236
|
-
it 'convert Ruby template to JSON template with
|
236
|
+
it 'convert Ruby template to JSON template with converting user_data' do
|
237
237
|
template = <<-TEMPLATE
|
238
238
|
Parameters do
|
239
239
|
Password do
|
@@ -304,7 +304,7 @@ Resources do
|
|
304
304
|
InstanceType "t1.micro"
|
305
305
|
|
306
306
|
UserData do
|
307
|
-
Fn__Base64
|
307
|
+
Fn__Base64 (<<-EOS).fn_join
|
308
308
|
#!/bin/bash
|
309
309
|
echo START | logger
|
310
310
|
/opt/aws/bin/cfn-init -s <%= Ref "AWS::StackName" %> -r #{resource_name} --region <%= Ref "AWS::Region" %>
|
@@ -332,7 +332,7 @@ Resources do
|
|
332
332
|
|
333
333
|
commands do
|
334
334
|
any_name do
|
335
|
-
command
|
335
|
+
command (<<-EOS).fn_join
|
336
336
|
echo <%= Ref "Password" %> > /tmp/my-password
|
337
337
|
EOS
|
338
338
|
end
|