tfw 0.1.12 → 0.1.17

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: 2202602ca2643b8387cc9c81999e64790143c10e2fa36cd85d8da69cfd7bcbf9
4
- data.tar.gz: e11b79e32962941ff85bde48c81fa3375c4881792cf787fa98b0b3860ac0b9a3
3
+ metadata.gz: d1667921d8444a91df964f9a1549bb1de15da91a8c4b725bba68d388c0c647f9
4
+ data.tar.gz: aac7e1a4de69d0a03144c0f12349efc1805039fb33bc667d7772cf38f2605776
5
5
  SHA512:
6
- metadata.gz: d84fd7abb4ac45f9c879edd847b176207271cc978358ab4758ccf3b276e7cefd3daa61666a6fe792f723a092033667d72bc55e7a9f5c64352042124b3e163bd1
7
- data.tar.gz: e8dcdf47ff0124ac384b3df9e4f6e1a1dc5943638d11049e954ddce46f7122c83c1d4b00d986feef8b6122884082d4c0621bdb2c9d15509fb3f8980d9775500e
6
+ metadata.gz: bd9f23b7ed8d16722b51052d8127900f71a26f9c91d5ace1687212a80f6b0f6ea85afada6a9bbf263309704ecb541e032740bbbc06fd612c1d05e6134b3bf8de
7
+ data.tar.gz: '025349e20a5ead689646c6779a185cb0dc39090aca8a760b93de9bfc26b539670dbbad8bf891284bde12796a2f1c7158af20bfc1c66b3fc448f7ab5e048680c5'
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tfw (0.1.12)
5
- tfdsl (= 0.1.8)
4
+ tfw (0.1.17)
5
+ tfdsl (= 0.1.11)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -15,9 +15,10 @@ GEM
15
15
  term-ansicolor (~> 1.3)
16
16
  thor (~> 0.19.4)
17
17
  tins (~> 1.6)
18
+ deep_merge (1.2.1)
18
19
  docile (1.3.1)
19
20
  jaro_winkler (1.5.4)
20
- json (2.1.0)
21
+ json (2.3.1)
21
22
  method_source (0.9.2)
22
23
  minitest (5.12.2)
23
24
  parallel (1.19.1)
@@ -43,7 +44,8 @@ GEM
43
44
  simplecov-html (0.10.2)
44
45
  term-ansicolor (1.7.1)
45
46
  tins (~> 1.0)
46
- tfdsl (0.1.8)
47
+ tfdsl (0.1.11)
48
+ deep_merge (~> 1.2)
47
49
  thor (0.19.4)
48
50
  tins (1.20.2)
49
51
  unicode-display_width (1.6.1)
data/lib/tfw.rb CHANGED
@@ -14,6 +14,8 @@ module TFW
14
14
 
15
15
  require "#{LIB_DIR}/setters"
16
16
  require "#{LIB_DIR}/module"
17
+ require "#{LIB_DIR}/stack_methods"
18
+ require "#{LIB_DIR}/aws_sg_workaround"
17
19
 
18
20
  WORKSPACE = './.tfw'
19
21
  FileUtils.mkdir_p WORKSPACE
@@ -92,7 +94,7 @@ module TFW
92
94
 
93
95
  if as_json?
94
96
  stack_file = "#{stack_file}.json"
95
- File.write stack_file, pretty_json(stack.to_json)
97
+ File.write stack_file, pretty_json(AwsSgWorkaround.fix(stack.to_json))
96
98
  else
97
99
  File.write stack_file, stack
98
100
  end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TFW
4
+ # This module is a workaround the issue that when using json some fields that are optional become required
5
+ # https://github.com/hashicorp/terraform/issues/23347
6
+ module AwsSgWorkaround
7
+ module_function
8
+
9
+ def fix(stack_json)
10
+ stack = JSON.parse stack_json
11
+ return stack.to_json unless stack.key? 'resource'
12
+
13
+ r = stack['resource']
14
+ return stack.to_json unless r.key? 'aws_security_group'
15
+
16
+ asg = r['aws_security_group']
17
+ asg.each do |_, sg|
18
+ replace_and_fill sg, 'egress' if sg.key? 'egress'
19
+ replace_and_fill sg, 'ingress' if sg.key? 'ingress'
20
+ end
21
+ stack.to_json
22
+ end
23
+
24
+ def replace_and_fill(obj, key)
25
+ backup = obj[key]
26
+ fill_fields(backup)
27
+ obj[key] = [backup]
28
+ end
29
+
30
+ def fill_fields(obj)
31
+ obj['description'] = '' unless obj.key? 'description'
32
+ obj['security_groups'] = [] unless obj.key? 'security_groups'
33
+ obj['self'] = false unless obj.key? 'self'
34
+ obj['ipv6_cidr_blocks'] = [] unless obj.key? 'ipv6_cidr_blocks'
35
+ obj['prefix_list_ids'] = [] unless obj.key? 'prefix_list_ids'
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TFW
4
+ # Dynamically create stack methods
5
+ module CreateStackMethods
6
+ def create_stack_methods
7
+ stack = TFW::State.instance.stack
8
+ %w[provider variable locals tfmodule datasource resource output terraform].each do |name|
9
+ define_method(name) { |*args, &block| stack.method(name).call(*args, &block) }
10
+ end
11
+ end
12
+ end
13
+
14
+ # This class carries stack methods, use it through inheritance class SomeClass < StackMethods
15
+ class StackMethods
16
+ extend CreateStackMethods
17
+ create_stack_methods
18
+ end
19
+ end
data/lib/tfw/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TFW
4
- VERSION = '0.1.12'
4
+ VERSION = '0.1.17'
5
5
  end
data/tfw.gemspec CHANGED
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
36
36
  spec.require_paths = ['lib']
37
37
 
38
- spec.add_dependency 'tfdsl', '0.1.8'
38
+ spec.add_dependency 'tfdsl', '0.1.11'
39
39
 
40
40
  spec.add_development_dependency 'bundler', '~> 1.17'
41
41
  spec.add_development_dependency 'coveralls', '~> 0.8'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tfw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.17
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-04-19 00:00:00.000000000 Z
11
+ date: 2021-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tfdsl
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.8
19
+ version: 0.1.11
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.8
26
+ version: 0.1.11
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -132,8 +132,10 @@ files:
132
132
  - exe/tfw
133
133
  - exe/tfw-test
134
134
  - lib/tfw.rb
135
+ - lib/tfw/aws_sg_workaround.rb
135
136
  - lib/tfw/module.rb
136
137
  - lib/tfw/setters.rb
138
+ - lib/tfw/stack_methods.rb
137
139
  - lib/tfw/state.rb
138
140
  - lib/tfw/version.rb
139
141
  - tfw.gemspec
@@ -142,7 +144,7 @@ licenses:
142
144
  - MIT
143
145
  metadata:
144
146
  homepage_uri: https://github.com/tlopo-ruby/tfw
145
- post_install_message:
147
+ post_install_message:
146
148
  rdoc_options: []
147
149
  require_paths:
148
150
  - lib
@@ -157,8 +159,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
159
  - !ruby/object:Gem::Version
158
160
  version: '0'
159
161
  requirements: []
160
- rubygems_version: 3.0.3
161
- signing_key:
162
+ rubygems_version: 3.1.2
163
+ signing_key:
162
164
  specification_version: 4
163
165
  summary: Terraform Wrapper using Terraform DSL for Ruby
164
166
  test_files: []