tfdsl 0.1.6 → 0.1.11

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: 53563b8b3088da24df347a50b3b4e2395693adcece9a8b989551319a2c578bbb
4
- data.tar.gz: 37b84c6ff14faa80f7937ba523f283ab69d4785a139a1093164d1b5a247c09d3
3
+ metadata.gz: 3e3ed7ad4bd1cea523d00c34a641f04ddb53ef3c9162aac8d119af7e1024b02a
4
+ data.tar.gz: f2741e78405e6f64a87b73bf238bb87f5f3e8b76c65b9eedc92d93f2536302c4
5
5
  SHA512:
6
- metadata.gz: cab4005373305f9952341bd0f18f030b29e120c0587171f21ca2b8eb2cbc7d5f4eb491e439dc2dd5c671adb44d6fdd3e55f56f51ad3a0e0cb8635806bfe04b54
7
- data.tar.gz: dd2d9e075827b24af100ee179ac58022bd43553e6ec3241980650afc5266f5d9f5e4b629e01514f496b6bdc6b6ba6234d9d1074f51ed3ed3f6e5dcacd50e3e68
6
+ metadata.gz: 326079630322cca9e9219ec70d5038cb29d45f2b2032ed4a5f230d26c9f5f6bd8ac378d5b3fc3ba358dcc7cdd205db5cd10f64632e8d2e9f1192a2f559c606a5
7
+ data.tar.gz: 7a2e4062d919909b291b6562556f87f2dce6b926aa23838e56b027fd32287f2e954a45f46ebb23e2c078d5a0619d7eb774df231bb2f20168bdf8f4d4ae924526
@@ -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,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tfdsl (0.1.6)
4
+ tfdsl (0.1.11)
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!
@@ -11,6 +11,10 @@ module TFDSL
11
11
 
12
12
  def method_missing(method_name, *args, &block)
13
13
  super if [:respond_to_missing?].include? method_name
14
+ return method_missing_handler(method_name, *args, &block)
15
+ end
16
+
17
+ def method_missing_handler(method_name, *args, &block)
14
18
  method = method_name.to_s.gsub(/=$/, '')
15
19
 
16
20
  if block_given?
@@ -25,6 +29,10 @@ module TFDSL
25
29
  return instance_variable_get "@#{method}" if args.empty?
26
30
  end
27
31
 
32
+ def timeout(*args, &block)
33
+ method_missing_handler :timeout, *args, &block
34
+ end
35
+
28
36
  def respond_to_missing?(_method_name, _include_private = true)
29
37
  true
30
38
  end
@@ -50,7 +58,7 @@ module TFDSL
50
58
  labels = [__type__] + labels if !__type__.empty? && depth.zero?
51
59
 
52
60
  labels.each do |l|
53
- ref[l] = {}
61
+ ref[l] = {} if ref[l].nil?
54
62
  ref = ref[l]
55
63
  end
56
64
 
@@ -64,13 +72,16 @@ module TFDSL
64
72
  __blocks__.each do |b|
65
73
  json = b.to_json_repr depth + 1
66
74
  if b.__labels__.empty?
67
- ref[b.__type__] = json
75
+ if ref[b.__type__].nil?
76
+ ref[b.__type__] = json
77
+ else
78
+ ref[b.__type__] = [ref[b.__type__], json].flatten
79
+ end
68
80
  else
69
81
  ref[b.__type__] = [] if ref[b.__type__].nil?
70
82
  ref[b.__type__] << json
71
83
  end
72
84
  end
73
-
74
85
  block['tmp']
75
86
  end
76
87
  end
@@ -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.6'.freeze
2
+ VERSION = '0.1.11'.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.6
4
+ version: 0.1.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tiago Lopo
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-24 00:00:00.000000000 Z
11
+ date: 2020-10-15 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
@@ -161,7 +175,7 @@ homepage: https://github.com/tlopo-ruby/tfdsl.git
161
175
  licenses:
162
176
  - MIT
163
177
  metadata: {}
164
- post_install_message:
178
+ post_install_message:
165
179
  rdoc_options: []
166
180
  require_paths:
167
181
  - lib
@@ -176,8 +190,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
190
  - !ruby/object:Gem::Version
177
191
  version: '0'
178
192
  requirements: []
179
- rubygems_version: 3.0.3
180
- signing_key:
193
+ rubygems_version: 3.1.2
194
+ signing_key:
181
195
  specification_version: 4
182
196
  summary: A chef like DSL for terraform
183
197
  test_files: []