tfdsl 0.1.5 → 0.1.10

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