ruby-terraform 1.7.0.pre.1 → 1.7.0.pre.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: 680283afcf36ed8fa426c1223836e60e576efcad33524e459ba287e22cf803a2
4
- data.tar.gz: 15513e05d5002247601634b071794d6b2f04cbc91d1f147d7100d92210c1df9d
3
+ metadata.gz: f456092f582718db648a5bdfab600d022ffd02b464da155088de1f1ca5247aa2
4
+ data.tar.gz: e79d368374b9f892ac2fec66d5262f6b9d0999542772e8542912b18791ac1656
5
5
  SHA512:
6
- metadata.gz: 19cddfe7e77d1601eccab259866df3c16cb15b3d98ca2e5b4852b253e5e5303b27141a8c8ce204aba7a13ad2fef452e1eb61cca9a85f4bd53c7a1c9e2724def4
7
- data.tar.gz: d8bd7161d5343e1696d3386e58b84aec9d51e4bb2b93f88c1e51df998b7adf44f00e03b3fba47b0484701280ab4b963ab239a12055a1d2e59ef73b509b2b34c2
6
+ metadata.gz: 7e00c371ab4abea3f4d9448fc8a9fdd0dcdb7abcdd069aeb77f74ef1f16944dd2bc1f597cdb9ff5c6b2ede990f35c064adcb56dac50bcb9ac9cd74c0a1411703
7
+ data.tar.gz: 01f44d86b1c2ef64a2ea9511a14ece5903d34e554b6908cfe9c41dd724e2a3d7f934fca8f1168b9c94544dcf2b07fb20c3d94f1071dbc408ea8825819eb2398a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby-terraform (1.7.0.pre.1)
4
+ ruby-terraform (1.7.0.pre.2)
5
5
  immutable-struct (~> 2.4)
6
6
  lino (~> 3.0)
7
7
 
@@ -129,8 +129,8 @@ GEM
129
129
  parser (>= 3.1.1.0)
130
130
  rubocop-rake (0.6.0)
131
131
  rubocop (~> 1.0)
132
- rubocop-rspec (2.11.1)
133
- rubocop (~> 1.19)
132
+ rubocop-rspec (2.12.1)
133
+ rubocop (~> 1.31)
134
134
  ruby-progressbar (1.11.0)
135
135
  ruby2_keywords (0.0.5)
136
136
  ruby_gpg2 (0.8.0)
@@ -8,14 +8,21 @@ module RubyTerraform
8
8
  module Objects
9
9
  class << self
10
10
  # rubocop:disable Style/RedundantAssignment
11
- def box(object, unknown: {}, sensitive: {})
11
+ def box(object, unknown: nil, sensitive: nil)
12
+ initial = boxed_empty_by_value(object)
13
+ unknown ||= native_empty_by_value(object)
14
+ sensitive ||= native_empty_by_value(object)
15
+
16
+ return Values.unknown(sensitive: sensitive) if unknown == true
17
+
12
18
  boxed_unknown =
13
- box_unknown(unknown, sensitive: sensitive)
19
+ box_unknown(unknown, sensitive: sensitive, initial: initial)
14
20
  boxed_object =
15
21
  box_known(object, sensitive: sensitive, initial: boxed_unknown)
16
22
 
17
23
  boxed_object
18
24
  end
25
+
19
26
  # rubocop:enable Style/RedundantAssignment
20
27
 
21
28
  def paths(object, current = [], accumulator = [])
@@ -49,11 +56,15 @@ module RubyTerraform
49
56
 
50
57
  private
51
58
 
59
+ # rubocop:disable Metrics/MethodLength
52
60
  def box_unknown(unknown, sensitive: {}, initial: Values.empty_map)
53
61
  unknown_paths = paths(unknown)
62
+ if root_path(unknown_paths)
63
+ return Values.unknown(sensitive: sensitive)
64
+ end
65
+
54
66
  unknown_values = unknown_values(
55
- unknown_paths,
56
- unknown: unknown, sensitive: sensitive
67
+ unknown_paths, unknown: unknown, sensitive: sensitive
57
68
  )
58
69
 
59
70
  object(
@@ -61,12 +72,17 @@ module RubyTerraform
61
72
  sensitive: sensitive, initial: initial
62
73
  )
63
74
  end
75
+ # rubocop:enable Metrics/MethodLength
64
76
 
77
+ # rubocop:disable Metrics/MethodLength
65
78
  def box_known(object, sensitive: {}, initial: Values.empty_map)
66
79
  object_paths = paths(object)
80
+ if root_path(object_paths)
81
+ return Values.known(object, sensitive: sensitive)
82
+ end
83
+
67
84
  object_values = known_values(
68
- object_paths,
69
- object: object, sensitive: sensitive
85
+ object_paths, object: object, sensitive: sensitive
70
86
  )
71
87
 
72
88
  object(
@@ -74,6 +90,7 @@ module RubyTerraform
74
90
  sensitive: sensitive, initial: initial
75
91
  )
76
92
  end
93
+ # rubocop:enable Metrics/MethodLength
77
94
 
78
95
  def object(paths, values, sensitive: {}, initial: Values.empty_map)
79
96
  paths
@@ -95,6 +112,7 @@ module RubyTerraform
95
112
  object
96
113
  end
97
114
 
115
+ # rubocop:disable Metrics/MethodLength
98
116
  def update_object_for_step(object, pointer, value, sensitive: {})
99
117
  seen, step, remaining = pointer
100
118
 
@@ -102,14 +120,16 @@ module RubyTerraform
102
120
  upcoming = remaining.first
103
121
 
104
122
  resolved_sensitive = try_dig(sensitive, seen + [step]) == true
105
- resolved = if remaining.empty?
106
- value
107
- else
108
- empty_by_type(upcoming, sensitive: resolved_sensitive)
109
- end
123
+ resolved =
124
+ if remaining.empty?
125
+ value
126
+ else
127
+ boxed_empty_by_key(upcoming, sensitive: resolved_sensitive)
128
+ end
110
129
 
111
130
  parent[step] ||= resolved
112
131
  end
132
+ # rubocop:enable Metrics/MethodLength
113
133
 
114
134
  def update_context_for_step(pointer)
115
135
  seen, step, remaining = pointer
@@ -125,14 +145,29 @@ module RubyTerraform
125
145
  default
126
146
  end
127
147
 
128
- def empty_by_type(value, sensitive: false)
129
- if value.is_a?(Numeric)
148
+ def boxed_empty_by_key(key, sensitive: false)
149
+ if key.is_a?(Numeric)
130
150
  Values.empty_list(sensitive: sensitive)
131
151
  else
132
152
  Values.empty_map(sensitive: sensitive)
133
153
  end
134
154
  end
135
155
 
156
+ def boxed_empty_by_value(value, sensitive: false)
157
+ case value
158
+ when Array then Values.empty_list(sensitive: sensitive)
159
+ when Hash then Values.empty_map(sensitive: sensitive)
160
+ end
161
+ end
162
+
163
+ def native_empty_by_value(value)
164
+ case value
165
+ when Array then []
166
+ when Hash then {}
167
+ else false
168
+ end
169
+ end
170
+
136
171
  def normalise(object)
137
172
  case object
138
173
  when Array then object.each_with_index.to_a
@@ -140,6 +175,10 @@ module RubyTerraform
140
175
  else object
141
176
  end
142
177
  end
178
+
179
+ def root_path(paths)
180
+ paths.count == 1 && paths[0].empty?
181
+ end
143
182
  end
144
183
  end
145
184
  # rubocop:enable Metrics/ModuleLength
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubyTerraform
4
- VERSION = '1.7.0.pre.1'
4
+ VERSION = '1.7.0.pre.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0.pre.1
4
+ version: 1.7.0.pre.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfraBlocks Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-02 00:00:00.000000000 Z
11
+ date: 2022-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: immutable-struct