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 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