ruby-terraform 1.7.0.pre.1 → 1.7.0.pre.4

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: 680283afcf36ed8fa426c1223836e60e576efcad33524e459ba287e22cf803a2
4
- data.tar.gz: 15513e05d5002247601634b071794d6b2f04cbc91d1f147d7100d92210c1df9d
3
+ metadata.gz: e7e33039e6162acf99865f3e33e3208d288bc93b7c1a43d39c3b44f137bdcf92
4
+ data.tar.gz: 7e7ef758f7bb5bdbeabbda16019c49afe3305aaba9089787d4681f3e875a2f3c
5
5
  SHA512:
6
- metadata.gz: 19cddfe7e77d1601eccab259866df3c16cb15b3d98ca2e5b4852b253e5e5303b27141a8c8ce204aba7a13ad2fef452e1eb61cca9a85f4bd53c7a1c9e2724def4
7
- data.tar.gz: d8bd7161d5343e1696d3386e58b84aec9d51e4bb2b93f88c1e51df998b7adf44f00e03b3fba47b0484701280ab4b963ab239a12055a1d2e59ef73b509b2b34c2
6
+ metadata.gz: 80ab103749e2a57d90d339b83171f2e56128523aea06cfb2643b6e5c30d5bddb340734e3b3ca0248188217807b284c6c47c922fba7de6ec507d4771f90e2c659
7
+ data.tar.gz: 0b70beb4a0efd237b1aab284068eaaa244c45c62050b115fdc8e793f6347ab7b85b8adc8e824569fcd09e08fc055842e27a1bfa8456efe5723c1bf9aacdd61f7
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.4)
5
5
  immutable-struct (~> 2.4)
6
6
  lino (~> 3.0)
7
7
 
@@ -59,12 +59,12 @@ GEM
59
59
  rb-inotify (~> 0.9, >= 0.9.10)
60
60
  lumberjack (1.2.8)
61
61
  method_source (1.0.0)
62
- minitest (5.16.1)
62
+ minitest (5.16.2)
63
63
  nenv (0.3.0)
64
64
  notiffany (0.1.3)
65
65
  nenv (~> 0.1)
66
66
  shellany (~> 0.0)
67
- octokit (4.25.0)
67
+ octokit (4.25.1)
68
68
  faraday (>= 1, < 3)
69
69
  sawyer (~> 0.9)
70
70
  open4 (1.3.4)
@@ -115,7 +115,7 @@ GEM
115
115
  diff-lcs (>= 1.2.0, < 2.0)
116
116
  rspec-support (~> 3.11.0)
117
117
  rspec-support (3.11.0)
118
- rubocop (1.31.1)
118
+ rubocop (1.31.2)
119
119
  json (~> 2.3)
120
120
  parallel (~> 1.10)
121
121
  parser (>= 3.1.0.0)
@@ -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)
@@ -155,7 +155,10 @@ GEM
155
155
  webrick (~> 1.7.0)
156
156
 
157
157
  PLATFORMS
158
+ arm64-darwin-21
158
159
  ruby
160
+ x86_64-darwin-19
161
+ x86_64-linux
159
162
 
160
163
  DEPENDENCIES
161
164
  bundler
@@ -177,4 +180,4 @@ DEPENDENCIES
177
180
  yard
178
181
 
179
182
  BUNDLED WITH
180
- 2.3.17
183
+ 2.3.18
@@ -13,6 +13,7 @@ module RubyTerraform
13
13
  end
14
14
 
15
15
  attr_reader :value
16
+ alias unbox value
16
17
 
17
18
  def known?
18
19
  true
@@ -39,6 +39,14 @@ module RubyTerraform
39
39
 
40
40
  attr_reader :value
41
41
 
42
+ def unbox
43
+ value.map(&:unbox)
44
+ end
45
+
46
+ def known?
47
+ true
48
+ end
49
+
42
50
  def sensitive?
43
51
  @sensitive
44
52
  end
@@ -35,6 +35,14 @@ module RubyTerraform
35
35
 
36
36
  attr_reader :value
37
37
 
38
+ def unbox
39
+ value.transform_values(&:unbox)
40
+ end
41
+
42
+ def known?
43
+ true
44
+ end
45
+
38
46
  def sensitive?
39
47
  @sensitive
40
48
  end
@@ -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
@@ -11,6 +11,11 @@ module RubyTerraform
11
11
  @sensitive = sensitive
12
12
  end
13
13
 
14
+ def value
15
+ nil
16
+ end
17
+ alias unbox value
18
+
14
19
  def known?
15
20
  false
16
21
  end
@@ -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.4'
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.4
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-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: immutable-struct