tfdsl 0.1.1 → 0.1.2
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/.rubocop.yml +1 -0
- data/Gemfile.lock +1 -1
- data/lib/tfdsl.rb +1 -0
- data/lib/tfdsl/block.rb +33 -0
- data/lib/tfdsl/formatter.rb +1 -11
- data/lib/tfdsl/kind_translator.rb +20 -0
- data/lib/tfdsl/stack.rb +10 -0
- data/lib/tfdsl/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 763557b226c240bfc0935cd389a35a79ddadddf4d5c53606d4b336c39a5f00c9
|
4
|
+
data.tar.gz: f65922542151a6acffcf6a98e092790727fce4b8249b4955b094f6735de470f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09eaa55694335e7e5ab8130ffc987837358f7d4ecf769930bd0d4a100cab40000896419753ef1cf3fc91a94cbf051d82dad059f895fbbf985adef88911564169'
|
7
|
+
data.tar.gz: 6d08d40412c61b5da9c09edae07f20d2c81f90e009cd3a74613b256297d6f2a1cb555e59b6b15494bf673e78479a3895da3d35c9f5b682ac0a31114e9857d35c
|
data/.rubocop.yml
CHANGED
data/Gemfile.lock
CHANGED
data/lib/tfdsl.rb
CHANGED
data/lib/tfdsl/block.rb
CHANGED
@@ -40,5 +40,38 @@ module TFDSL
|
|
40
40
|
def to_s
|
41
41
|
to_tf
|
42
42
|
end
|
43
|
+
|
44
|
+
def to_json_repr(depth = 0)
|
45
|
+
block = { 'tmp' => {} }
|
46
|
+
|
47
|
+
ref = block['tmp']
|
48
|
+
|
49
|
+
labels = __labels__.dup
|
50
|
+
labels = [__type__] + labels if !__type__.empty? && depth.zero?
|
51
|
+
|
52
|
+
labels.each do |l|
|
53
|
+
ref[l] = {}
|
54
|
+
ref = ref[l]
|
55
|
+
end
|
56
|
+
|
57
|
+
instance_variables.each do |var|
|
58
|
+
var_name = var.to_s.gsub(/^@/, '')
|
59
|
+
next if var_name =~ /^__/
|
60
|
+
|
61
|
+
ref[var_name] = send var_name
|
62
|
+
end
|
63
|
+
|
64
|
+
__blocks__.each do |b|
|
65
|
+
json = b.to_json_repr depth + 1
|
66
|
+
if b.__labels__.empty?
|
67
|
+
ref[b.__type__] = json
|
68
|
+
else
|
69
|
+
ref[b.__type__] = [] if ref[b.__type__].nil?
|
70
|
+
ref[b.__type__] << json
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
block['tmp']
|
75
|
+
end
|
43
76
|
end
|
44
77
|
end
|
data/lib/tfdsl/formatter.rb
CHANGED
@@ -2,17 +2,7 @@ module TFDSL
|
|
2
2
|
# Class responsible for formatting the string representation of terraform blocks
|
3
3
|
class Formatter
|
4
4
|
def kind(cls)
|
5
|
-
|
6
|
-
Provider => 'provider',
|
7
|
-
TFModule => 'module',
|
8
|
-
Locals => 'locals',
|
9
|
-
Resource => 'resource',
|
10
|
-
Variable => 'variable',
|
11
|
-
DataSource => 'data',
|
12
|
-
Output => 'output',
|
13
|
-
Terraform => 'terraform'
|
14
|
-
}
|
15
|
-
kinds[cls]
|
5
|
+
KindTranslator.kind cls
|
16
6
|
end
|
17
7
|
|
18
8
|
def format(tf_block)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module TFDSL
|
2
|
+
# Translates Class names into terraform block types
|
3
|
+
module KindTranslator
|
4
|
+
module_function
|
5
|
+
|
6
|
+
def kind(cls)
|
7
|
+
kinds = {
|
8
|
+
Provider => 'provider',
|
9
|
+
TFModule => 'module',
|
10
|
+
Locals => 'locals',
|
11
|
+
Resource => 'resource',
|
12
|
+
Variable => 'variable',
|
13
|
+
DataSource => 'data',
|
14
|
+
Output => 'output',
|
15
|
+
Terraform => 'terraform'
|
16
|
+
}
|
17
|
+
kinds[cls]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/tfdsl/stack.rb
CHANGED
@@ -21,5 +21,15 @@ module TFDSL
|
|
21
21
|
def to_s
|
22
22
|
@objects.each_with_object('') { |o, str| str << o }
|
23
23
|
end
|
24
|
+
|
25
|
+
def to_json
|
26
|
+
stack = {}
|
27
|
+
@objects.each do |obj|
|
28
|
+
key = KindTranslator.kind obj.class
|
29
|
+
stack[key] = {} if stack[key].nil?
|
30
|
+
stack[key] = stack[key].merge obj.to_json_repr
|
31
|
+
end
|
32
|
+
stack.to_json
|
33
|
+
end
|
24
34
|
end
|
25
35
|
end
|
data/lib/tfdsl/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tfdsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tiago Lopo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- lib/tfdsl/data_formatter.rb
|
146
146
|
- lib/tfdsl/data_source.rb
|
147
147
|
- lib/tfdsl/formatter.rb
|
148
|
+
- lib/tfdsl/kind_translator.rb
|
148
149
|
- lib/tfdsl/locals.rb
|
149
150
|
- lib/tfdsl/output.rb
|
150
151
|
- lib/tfdsl/provider.rb
|