terrafying 1.7.2 → 1.7.3
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/lib/terrafying/generator.rb +124 -41
- data/lib/terrafying/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 32f4ef6c7f02da11c400fc113d16991f83f4349bc6b816fd0fd185a5bc2a3960
|
|
4
|
+
data.tar.gz: 420109d3c89f7da19b0c07caff82aeba01da61a47d334f2a650af44077a1af1d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7112e9865bc46955679826bebdecad789aa32a1f8b420f5e873921b6235b515790af4f0c5f9b99def4ad02d234497fe21679bb8bd3324282e5bb194e8c70a1aa
|
|
7
|
+
data.tar.gz: e89e709c6db84c2c263dc554fbe56a46b60b4bf5d0bf1f036efdd7c2a3abbc4c8c0687d322e9f8a8ce1d5172239f8564ab4699704497268d71eeed5a857ac3d6
|
data/lib/terrafying/generator.rb
CHANGED
|
@@ -7,28 +7,15 @@ require 'terrafying/aws'
|
|
|
7
7
|
|
|
8
8
|
module Terrafying
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
ARG_PLACEHOLDER = "ARG_PLACEHOLDER123"
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
kind: :resource,
|
|
14
|
-
type: "",
|
|
15
|
-
name:,
|
|
16
|
-
key: nil,
|
|
17
|
-
fns: []
|
|
18
|
-
)
|
|
19
|
-
@kind = kind
|
|
20
|
-
@type = type
|
|
21
|
-
@name = name
|
|
22
|
-
@key = key
|
|
23
|
-
@fns = Array(fns)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def resource?
|
|
27
|
-
@kind == :resource
|
|
28
|
-
end
|
|
12
|
+
class Ref
|
|
29
13
|
|
|
30
|
-
def fn_call(fn)
|
|
31
|
-
|
|
14
|
+
def fn_call(fn, *args)
|
|
15
|
+
if args.length == 0
|
|
16
|
+
args = [ARG_PLACEHOLDER]
|
|
17
|
+
end
|
|
18
|
+
FnRef.new(fn: fn, args: args, ref: self)
|
|
32
19
|
end
|
|
33
20
|
|
|
34
21
|
def downcase
|
|
@@ -39,23 +26,24 @@ module Terrafying
|
|
|
39
26
|
fn_call("trimspace")
|
|
40
27
|
end
|
|
41
28
|
|
|
42
|
-
def
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
type = @type
|
|
47
|
-
if ! resource?
|
|
48
|
-
type = [@kind.to_s, @type]
|
|
49
|
-
end
|
|
29
|
+
def split(separator)
|
|
30
|
+
fn_call("split", separator, ARG_PLACEHOLDER)
|
|
31
|
+
end
|
|
50
32
|
|
|
51
|
-
|
|
52
|
-
if
|
|
53
|
-
|
|
33
|
+
def slice(idx, length=0)
|
|
34
|
+
if length != 0
|
|
35
|
+
fn_call("slice", ARG_PLACEHOLDER, idx, idx+length)
|
|
36
|
+
else
|
|
37
|
+
fn_call("element", ARG_PLACEHOLDER, idx)
|
|
54
38
|
end
|
|
39
|
+
end
|
|
55
40
|
|
|
56
|
-
|
|
41
|
+
def realise
|
|
42
|
+
""
|
|
43
|
+
end
|
|
57
44
|
|
|
58
|
-
|
|
45
|
+
def to_s
|
|
46
|
+
"${#{realise}}"
|
|
59
47
|
end
|
|
60
48
|
|
|
61
49
|
def to_str
|
|
@@ -71,16 +59,109 @@ module Terrafying
|
|
|
71
59
|
end
|
|
72
60
|
|
|
73
61
|
def [](key)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
62
|
+
if key.is_a? Numeric
|
|
63
|
+
IndexRef.new(ref: self, idx: key)
|
|
64
|
+
else
|
|
65
|
+
AttributeRef.new(ref: self, key: key)
|
|
66
|
+
end
|
|
77
67
|
end
|
|
78
68
|
|
|
79
69
|
def []=(k, v)
|
|
80
70
|
raise "You can't set a value this way"
|
|
81
71
|
end
|
|
82
72
|
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
class RootRef < Ref
|
|
76
|
+
def initialize(
|
|
77
|
+
kind: :resource,
|
|
78
|
+
type: "",
|
|
79
|
+
name:
|
|
80
|
+
)
|
|
81
|
+
@kind = kind
|
|
82
|
+
@type = type
|
|
83
|
+
@name = name
|
|
84
|
+
end
|
|
83
85
|
|
|
86
|
+
def realise
|
|
87
|
+
type = [@type]
|
|
88
|
+
if @kind != :resource
|
|
89
|
+
type = [@kind, @type]
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
(type + [@name]).reject(&:empty?).join(".")
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def fn_call(fn, *args)
|
|
96
|
+
if @kind == :resource
|
|
97
|
+
self["id"].fn_call(fn, *args)
|
|
98
|
+
else
|
|
99
|
+
super
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def to_s
|
|
104
|
+
if @kind == :resource
|
|
105
|
+
"${#{realise}.id}"
|
|
106
|
+
else
|
|
107
|
+
super
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
class AttributeRef < Ref
|
|
113
|
+
def initialize(
|
|
114
|
+
ref:,
|
|
115
|
+
key:
|
|
116
|
+
)
|
|
117
|
+
@ref = ref
|
|
118
|
+
@key = key
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def realise
|
|
122
|
+
"#{@ref.realise}.#{@key}"
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
class IndexRef < Ref
|
|
127
|
+
def initialize(
|
|
128
|
+
ref:,
|
|
129
|
+
idx:
|
|
130
|
+
)
|
|
131
|
+
@ref = ref
|
|
132
|
+
@idx = idx
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def realise
|
|
136
|
+
"#{@ref.realise}[#{@idx}]"
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
class FnRef < Ref
|
|
141
|
+
def initialize(
|
|
142
|
+
ref:,
|
|
143
|
+
fn:,
|
|
144
|
+
args: []
|
|
145
|
+
)
|
|
146
|
+
@ref = ref
|
|
147
|
+
@fn = fn
|
|
148
|
+
@args = args
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def realise
|
|
152
|
+
ref = @ref.realise
|
|
153
|
+
args = @args.map { |arg|
|
|
154
|
+
if arg == ARG_PLACEHOLDER
|
|
155
|
+
ref
|
|
156
|
+
elsif arg.is_a? String
|
|
157
|
+
"\"#{arg}\""
|
|
158
|
+
else
|
|
159
|
+
arg
|
|
160
|
+
end
|
|
161
|
+
}.join(", ")
|
|
162
|
+
|
|
163
|
+
"#{@fn}(#{args})"
|
|
164
|
+
end
|
|
84
165
|
end
|
|
85
166
|
|
|
86
167
|
class Context
|
|
@@ -129,7 +210,7 @@ module Terrafying
|
|
|
129
210
|
raise "Local already exists #{name.to_s}" if @output["locals"].has_key? name.to_s
|
|
130
211
|
|
|
131
212
|
@output["locals"][name.to_s] = value
|
|
132
|
-
|
|
213
|
+
RootRef.new(kind: :local, name: name)
|
|
133
214
|
end
|
|
134
215
|
|
|
135
216
|
def var(name, spec)
|
|
@@ -138,7 +219,7 @@ module Terrafying
|
|
|
138
219
|
raise "Var already exists #{name.to_s}" if @output["variable"].has_key? name.to_s
|
|
139
220
|
|
|
140
221
|
@output["variable"][name.to_s] = spec
|
|
141
|
-
|
|
222
|
+
RootRef.new(kind: :var, name: name)
|
|
142
223
|
end
|
|
143
224
|
|
|
144
225
|
def data(type, name, spec)
|
|
@@ -147,7 +228,7 @@ module Terrafying
|
|
|
147
228
|
|
|
148
229
|
raise "Data already exists #{type.to_s}.#{name.to_s}" if @output["data"][type.to_s].has_key? name.to_s
|
|
149
230
|
@output["data"][type.to_s][name.to_s] = spec
|
|
150
|
-
|
|
231
|
+
RootRef.new(kind: :data, type: type, name: name)
|
|
151
232
|
end
|
|
152
233
|
|
|
153
234
|
def resource(type, name, attributes)
|
|
@@ -155,7 +236,7 @@ module Terrafying
|
|
|
155
236
|
|
|
156
237
|
raise "Resource already exists #{type.to_s}.#{name.to_s}" if @output["resource"][type.to_s].has_key? name.to_s
|
|
157
238
|
@output["resource"][type.to_s][name.to_s] = attributes
|
|
158
|
-
|
|
239
|
+
RootRef.new(kind: :resource, type: type, name: name)
|
|
159
240
|
end
|
|
160
241
|
|
|
161
242
|
def template(relative_path, params = {})
|
|
@@ -175,7 +256,7 @@ module Terrafying
|
|
|
175
256
|
end
|
|
176
257
|
|
|
177
258
|
def output_of(type, name, key)
|
|
178
|
-
|
|
259
|
+
RootRef.new(kind: :resource, type: type, name: name)[key]
|
|
179
260
|
end
|
|
180
261
|
|
|
181
262
|
def pretty_generate
|
|
@@ -248,6 +329,8 @@ module Terrafying
|
|
|
248
329
|
%w[
|
|
249
330
|
add!
|
|
250
331
|
aws
|
|
332
|
+
local
|
|
333
|
+
var
|
|
251
334
|
backend
|
|
252
335
|
provider
|
|
253
336
|
resource
|
data/lib/terrafying/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: terrafying
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.7.
|
|
4
|
+
version: 1.7.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- uSwitch Limited
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-03-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -274,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
274
274
|
- !ruby/object:Gem::Version
|
|
275
275
|
version: '0'
|
|
276
276
|
requirements: []
|
|
277
|
-
rubygems_version: 3.0.
|
|
277
|
+
rubygems_version: 3.0.3
|
|
278
278
|
signing_key:
|
|
279
279
|
specification_version: 4
|
|
280
280
|
summary: No.
|