tfdsl 0.1.1 → 0.1.2

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
2
  SHA256:
3
- metadata.gz: 87d14dbb280f759b3e8a28be2e70f5893d4d18173245bf612c8ec63c0f70b61e
4
- data.tar.gz: 902faacd228f429f154b427f03741764b84ac7d23588b85ff15cbc38d78f9099
3
+ metadata.gz: 763557b226c240bfc0935cd389a35a79ddadddf4d5c53606d4b336c39a5f00c9
4
+ data.tar.gz: f65922542151a6acffcf6a98e092790727fce4b8249b4955b094f6735de470f1
5
5
  SHA512:
6
- metadata.gz: bb25b4cba94784ce4da1ffcb584603a4eb0e7abf1ff70e4ad1ca895c0461496374d12a0ce3106920bdc7e26c646ea4664d7eef317ac8c8beb83a36815be4b932
7
- data.tar.gz: 8eb5b34029b9db9e9bdadaf744667794aa1e2cb0553a204a6ca8961980b9699a694be3c218cdf1bb2919338701c9e1d287cf4f0b1e45a172e6cf25acfad5e89b
6
+ metadata.gz: '09eaa55694335e7e5ab8130ffc987837358f7d4ecf769930bd0d4a100cab40000896419753ef1cf3fc91a94cbf051d82dad059f895fbbf985adef88911564169'
7
+ data.tar.gz: 6d08d40412c61b5da9c09edae07f20d2c81f90e009cd3a74613b256297d6f2a1cb555e59b6b15494bf673e78479a3895da3d35c9f5b682ac0a31114e9857d35c
@@ -9,6 +9,7 @@ Metrics/AbcSize:
9
9
  Exclude:
10
10
  - lib/**/formatter.rb
11
11
  - lib/**/data_formatter.rb
12
+ - lib/**/block.rb
12
13
  Metrics/MethodLength:
13
14
  Max: 35
14
15
  Metrics/LineLength:
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tfdsl (0.1.1)
4
+ tfdsl (0.1.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -10,6 +10,7 @@ module TFDSL
10
10
 
11
11
  require "#{LIB_DIR}/template"
12
12
  require "#{LIB_DIR}/data_formatter"
13
+ require "#{LIB_DIR}/kind_translator"
13
14
  require "#{LIB_DIR}/formatter"
14
15
  require "#{LIB_DIR}/block"
15
16
  require "#{LIB_DIR}/resource"
@@ -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
@@ -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
- kinds = {
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module TFDSL
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.1.2'.freeze
3
3
  end
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.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: 2019-12-23 00:00:00.000000000 Z
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