tfw 0.1.7 → 0.1.8

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: 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