tfw 0.1.7 → 0.1.8

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: ee246c67eff046643315775f2f09403be31558715e06bbf8137cf604c85655d5
4
- data.tar.gz: 8a64df7e4208173c3aa1f9d0fab34582ab54932a1d3a498dbf2a5b10abeaa297
3
+ metadata.gz: f7f44ae3f98d836eea0497fa0ff14b7494efb507effba9638f45d136907c0916
4
+ data.tar.gz: 2abbaf5b7b20431740e2939bd4fe9bd5b2288da248cc3247b2b64b5c6cde7bac
5
5
  SHA512:
6
- metadata.gz: a7f311faae818ad8cfb639fb8637af40cda9fec6f359951bda4e30c2fdb020730f49ee5e211718e5acdf56b977027daaaa3d8b0a89a5413d1c6222a95664ab74
7
- data.tar.gz: 4e5ebd6186b2bd49e7ef448a23f3ee731a96b576d7c97f75c2fd53fee3be087a9a506d2da0a6cced33e5e32a2671020e62aaa7baa7bda7ab50ff4b7a811577e9
6
+ metadata.gz: e5ff9d50d25a4490c1bd6f5bb1880920662f90dc230a7b80061627c7b0d00a13eede386c77982d164a859d06f3ae5e0225f625ecf1a4a873b05ed49354703b89
7
+ data.tar.gz: 3212278049b99074ca8ff204abff4bc0c5c4c5e7aa1039bf48fd9fb1b92ab301df2a140b91ce9593acf2a81e2ca5d38be0e24e0bf8e4a0b4177e372245fb6740
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tfw (0.1.7)
4
+ tfw (0.1.8)
5
5
  tfdsl (= 0.1.6)
6
6
 
7
7
  GEM
@@ -27,7 +27,7 @@ GEM
27
27
  coderay (~> 1.1.0)
28
28
  method_source (~> 0.9.0)
29
29
  rainbow (3.0.0)
30
- rake (10.5.0)
30
+ rake (13.0.1)
31
31
  rubocop (0.79.0)
32
32
  jaro_winkler (~> 1.5.1)
33
33
  parallel (~> 1.10)
@@ -56,7 +56,7 @@ DEPENDENCIES
56
56
  coveralls (~> 0.8)
57
57
  minitest (~> 5.0)
58
58
  pry (~> 0.12)
59
- rake (~> 10.0)
59
+ rake (~> 13.0)
60
60
  rubocop (~> 0.79)
61
61
  tfw!
62
62
 
data/exe/tfw-test ADDED
@@ -0,0 +1,23 @@
1
+ #! /usr/bin/env/ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'simplecov'
5
+
6
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
7
+ SimpleCov::Formatter::HTMLFormatter
8
+ ])
9
+
10
+ SimpleCov.minimum_coverage 90
11
+ SimpleCov.start
12
+
13
+ require 'minitest'
14
+
15
+ old_dir = Dir.pwd
16
+ Dir.chdir './test'
17
+
18
+ files = Dir.glob('**/*_test.rb').map { |f| File.expand_path f }
19
+ Dir.chdir old_dir
20
+
21
+ files.each { |f| require f }
22
+
23
+ Minitest.run ['-vp']
data/lib/tfw/module.rb CHANGED
@@ -13,7 +13,7 @@ module TFW
13
13
  raise "#{e} must be specified for module" if instance_variable_get("@#{e}").nil?
14
14
  end
15
15
 
16
- @stack = TFW.get_stack_for_dir @source, @input
16
+ @stack = TFW.get_stack_for_dir @source, @input, TFDSL::Stack.new
17
17
  end
18
18
  end
19
19
  end
data/lib/tfw/state.rb ADDED
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Singleton class to keep the stack
4
+ class State
5
+ include Singleton
6
+
7
+ def initialize
8
+ @stack = TFDSL::Stack.new
9
+ end
10
+
11
+ def stack(&block)
12
+ @stack.instance_eval(&block) if block_given?
13
+ @stack
14
+ end
15
+
16
+ def reset
17
+ @stack = TFDSL::Stack.new
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.7'
4
+ VERSION = '0.1.8'
5
5
  end
data/lib/tfw.rb CHANGED
@@ -3,6 +3,8 @@
3
3
  require 'tfw/version'
4
4
  require 'tfdsl'
5
5
  require 'json'
6
+ require 'singleton'
7
+ require_relative 'tfw/state'
6
8
 
7
9
  # TFW is a Terraform Wrapper which uses terraform DSL for Ruby
8
10
  module TFW
@@ -20,17 +22,19 @@ module TFW
20
22
  !ENV['TFW_AS_JSON'].nil?
21
23
  end
22
24
 
23
- def get_stack_for_dir(dir, input = nil)
25
+ def get_stack_for_dir(dir, input = nil, stack = State.instance.stack)
26
+ configure_methods_using_stack stack
27
+ configure_input_method input
28
+
24
29
  files = Dir.glob "#{dir}/*.rb"
25
- stack = TFDSL.stack do
26
- instance_variable_set '@_input', input
27
- files.sort.each { |f| instance_eval File.read(f), f }
28
- end
30
+ files.sort.each { |f| load f }
31
+ configure_methods_using_stack State.instance.stack
29
32
  stack
30
33
  end
31
34
 
32
35
  def cli(args)
33
36
  build_config
37
+ State.instance.reset
34
38
  run_terraform args
35
39
  end
36
40
 
@@ -94,6 +98,18 @@ module TFW
94
98
  end
95
99
  end
96
100
 
101
+ def configure_methods_using_stack(stack)
102
+ %w[provider variable locals tfmodule datsource resource output terraform].each do |name|
103
+ TOPLEVEL_BINDING.eval('self').define_singleton_method name do |*args, &block|
104
+ stack.method(name).call(*args, &block)
105
+ end
106
+ end
107
+ end
108
+
109
+ def configure_input_method(input)
110
+ TOPLEVEL_BINDING.eval('self').define_singleton_method('tfw_module_input') { input }
111
+ end
112
+
97
113
  def pretty_json(json)
98
114
  JSON.pretty_generate JSON.parse(json)
99
115
  end
data/tfw.gemspec CHANGED
@@ -41,6 +41,6 @@ Gem::Specification.new do |spec|
41
41
  spec.add_development_dependency 'coveralls', '~> 0.8'
42
42
  spec.add_development_dependency 'minitest', '~> 5.0'
43
43
  spec.add_development_dependency 'pry', '~> 0.12'
44
- spec.add_development_dependency 'rake', '~> 10.0'
44
+ spec.add_development_dependency 'rake', '~> 13.0'
45
45
  spec.add_development_dependency 'rubocop', '~> 0.79'
46
46
  end
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.7
4
+ version: 0.1.8
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-24 00:00:00.000000000 Z
11
+ date: 2020-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tfdsl
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '10.0'
89
+ version: '13.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '10.0'
96
+ version: '13.0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rubocop
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -113,6 +113,7 @@ email:
113
113
  - tiagolopo@yahoo.com.br
114
114
  executables:
115
115
  - tfw
116
+ - tfw-test
116
117
  extensions: []
117
118
  extra_rdoc_files: []
118
119
  files:
@@ -129,9 +130,11 @@ files:
129
130
  - bin/console
130
131
  - bin/setup
131
132
  - exe/tfw
133
+ - exe/tfw-test
132
134
  - lib/tfw.rb
133
135
  - lib/tfw/module.rb
134
136
  - lib/tfw/setters.rb
137
+ - lib/tfw/state.rb
135
138
  - lib/tfw/version.rb
136
139
  - tfw.gemspec
137
140
  homepage: https://github.com/tlopo-ruby/tfw