tfdsl 0.1.5 → 0.1.10

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: 74b2359139fb844e569e91739fbb44bacb3a87d5d73e3f0781dbcb9385039b21
4
- data.tar.gz: d9ca949f72e36b678bd7e2e0cbe3a1184e33d59afb10c5b1d5852a4f991a0ca3
3
+ metadata.gz: 188ff59f9e8c63a9d7123ed9900db3079a74b17f16926b11cebf3863db5cbf41
4
+ data.tar.gz: 45d14091543dfe0e02512247dffbcf97550432715c357e2ab382c62482a9856d
5
5
  SHA512:
6
- metadata.gz: 329600e4d9a1c456ccf5183922eff633927c1ef5af7796c8d3b15bcaba56fb6ff0645cdd890574f97ee4d8997981dc642d7b9d43075a9e10b48b94dcbfa44bd9
7
- data.tar.gz: 8913fe645797e29407a59510d452c6123e07224e47548c16e3a0c178b6944f99f42f9a6a6ac57be7d24a1dc722ad45599650e6cea8c23e15ef5457c15a2bf23a
6
+ metadata.gz: 71f58ea39f028ddb1dfc1ddf06388e02975bb0583bd3da4db9571e6ea14b10d8f60ec66b7bc19824417e106a3d961c52414b98913c7b265ad272d9aab3357b49
7
+ data.tar.gz: 4dff89253f6ede3be10703f0a1a7ee41d43ffbeac17de45f69ee8c9b8fc7a187451ab5288ad37b6d2a8f5514a70ff87a9fd487cca46013e163263e631b194cb7
@@ -18,6 +18,10 @@ Metrics/LineLength:
18
18
  - test/**/*
19
19
  Layout/ElseAlignment:
20
20
  Enabled: false
21
+ Metrics/CyclomaticComplexity:
22
+ Max: 10
23
+ Metrics/PerceivedComplexity:
24
+ Max: 10
21
25
  Metrics/BlockLength:
22
26
  Exclude:
23
27
  - '*.gemspec'
@@ -1,6 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "2.5.0"
4
3
  - "2.6.0"
5
4
  sudo: false
6
5
  cache: bundler
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tfdsl (0.1.5)
4
+ tfdsl (0.1.10)
5
+ deep_merge (~> 1.2)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
@@ -16,6 +17,7 @@ GEM
16
17
  term-ansicolor (~> 1.3)
17
18
  thor (~> 0.19.4)
18
19
  tins (~> 1.6)
20
+ deep_merge (1.2.1)
19
21
  docile (1.3.1)
20
22
  jaro_winkler (1.5.2)
21
23
  json (2.1.0)
@@ -31,7 +33,7 @@ GEM
31
33
  pry-coolline (0.2.5)
32
34
  coolline (~> 0.5)
33
35
  rainbow (3.0.0)
34
- rake (10.5.0)
36
+ rake (13.0.1)
35
37
  rubocop (0.63.1)
36
38
  jaro_winkler (~> 1.5.1)
37
39
  parallel (~> 1.10)
@@ -62,7 +64,7 @@ DEPENDENCIES
62
64
  minitest (~> 5.0)
63
65
  pry (~> 0.12)
64
66
  pry-coolline (~> 0.2)
65
- rake (~> 10.0)
67
+ rake (~> 13.0)
66
68
  rubocop (~> 0.63)
67
69
  simplecov (~> 0.16)
68
70
  tfdsl!
@@ -50,7 +50,7 @@ module TFDSL
50
50
  labels = [__type__] + labels if !__type__.empty? && depth.zero?
51
51
 
52
52
  labels.each do |l|
53
- ref[l] = {}
53
+ ref[l] = {} if ref[l].nil?
54
54
  ref = ref[l]
55
55
  end
56
56
 
@@ -64,13 +64,16 @@ module TFDSL
64
64
  __blocks__.each do |b|
65
65
  json = b.to_json_repr depth + 1
66
66
  if b.__labels__.empty?
67
- ref[b.__type__] = json
67
+ if ref[b.__type__].nil?
68
+ ref[b.__type__] = json
69
+ else
70
+ ref[b.__type__] = [ref[b.__type__], json].flatten
71
+ end
68
72
  else
69
73
  ref[b.__type__] = [] if ref[b.__type__].nil?
70
74
  ref[b.__type__] << json
71
75
  end
72
76
  end
73
-
74
77
  block['tmp']
75
78
  end
76
79
  end
@@ -55,6 +55,9 @@ module TFDSL
55
55
  end
56
56
 
57
57
  def safe_quote(str)
58
+ # Don't escape when string is interpolation
59
+ return str if str =~ /^\s*\$\{/
60
+
58
61
  str.gsub(/([^\\])"/, '\1\"').gsub(/([^\\])"/, '\1\"')
59
62
  end
60
63
 
@@ -1,3 +1,4 @@
1
+ require 'deep_merge'
1
2
  module TFDSL
2
3
  # This class is the representation of a terraform stack, or in another words
3
4
  # is a collection of terraform configuration blocks
@@ -27,9 +28,9 @@ module TFDSL
27
28
  @objects.each do |obj|
28
29
  key = KindTranslator.kind obj.class
29
30
  stack[key] = {} if stack[key].nil?
30
- stack[key] = stack[key].merge obj.to_json_repr
31
+ stack[key] = stack[key].deep_merge obj.to_json_repr
31
32
  end
32
- stack.to_json
33
+ JSON.pretty_generate(stack)
33
34
  end
34
35
  end
35
36
  end
@@ -7,20 +7,25 @@ module TFDSL
7
7
  template = <<-TEXT.gsub(/^ {6}/, '')
8
8
  <%=name%> = <%=DataFormatter.new.format value%>
9
9
  TEXT
10
- ERB.new(template, nil, '-').result(binding).strip
10
+ ERB.new(template, trim_mode: '-').result(binding).strip
11
11
  end
12
12
 
13
13
  def map(name, value)
14
14
  template = <<-TEXT.gsub(/^ {6}/, '')
15
15
  <%=name%> = <%=DataFormatter.new.format value%>
16
16
  TEXT
17
- ERB.new(template, nil, '-').result(binding).strip
17
+ ERB.new(template, trim_mode: '-').result(binding).strip
18
18
  end
19
19
 
20
20
  def child_block(value)
21
21
  labels = value.__labels__.nil? ? [] : value.__labels__
22
22
  labels_str = labels.map { |l| %("#{l}") }.join ' '
23
23
  type = value.__type__.nil? ? '' : %( #{value.__type__} )
24
+
25
+ # This is just to get ride of the warning of unused variables
26
+ # The variable are used, but as part of binding
27
+ _ = "#{labels_str}, #{type}"
28
+
24
29
  template = <<-TEXT.gsub(/^ {6}/, '')
25
30
  <%=type%><%=labels_str%> {
26
31
  <%- unless value.to_s.empty? -%>
@@ -28,14 +33,14 @@ module TFDSL
28
33
  <%- end -%>
29
34
  }
30
35
  TEXT
31
- ERB.new(template, nil, '-').result(binding).strip
36
+ ERB.new(template, trim_mode: '-').result(binding).strip
32
37
  end
33
38
 
34
39
  def value(name, value)
35
40
  template = <<-TEXT.gsub(/^ {6}/, '')
36
41
  <%=name%> = "<%=value%>"
37
42
  TEXT
38
- ERB.new(template, nil, '-').result(binding).strip
43
+ ERB.new(template, trim_mode: '-').result(binding).strip
39
44
  end
40
45
  end
41
46
  end
@@ -1,3 +1,3 @@
1
1
  module TFDSL
2
- VERSION = '0.1.5'.freeze
2
+ VERSION = '0.1.10'.freeze
3
3
  end
@@ -31,12 +31,13 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
+ spec.add_dependency 'deep_merge', '~> 1.2'
34
35
  spec.add_development_dependency 'bundler', '~> 1.16'
35
36
  spec.add_development_dependency 'coveralls', '~> 0.8'
36
37
  spec.add_development_dependency 'minitest', '~> 5.0'
37
38
  spec.add_development_dependency 'pry', '~> 0.12'
38
39
  spec.add_development_dependency 'pry-coolline', '~> 0.2'
39
- spec.add_development_dependency 'rake', '~> 10.0'
40
+ spec.add_development_dependency 'rake', '~> 13.0'
40
41
  spec.add_development_dependency 'rubocop', '~> 0.63'
41
42
  spec.add_development_dependency 'simplecov', '~> 0.16'
42
43
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tfdsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tiago Lopo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-21 00:00:00.000000000 Z
11
+ date: 2020-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: deep_merge
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.2'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +100,14 @@ dependencies:
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '10.0'
103
+ version: '13.0'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '10.0'
110
+ version: '13.0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: rubocop
99
113
  requirement: !ruby/object:Gem::Requirement