ruby-terraform 0.65.0.pre.1 → 0.65.0.pre.6

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.
@@ -0,0 +1,39 @@
1
+ require 'json'
2
+
3
+ require_relative 'base'
4
+
5
+ module RubyTerraform
6
+ module Options
7
+ class Standard < Base
8
+ def apply(builder)
9
+ if value.respond_to?(:keys)
10
+ apply_hash(builder)
11
+ elsif value.respond_to?(:each)
12
+ apply_array(builder)
13
+ else
14
+ builder.with_option(switch, value)
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def apply_hash(builder)
21
+ builder.with_repeated_option(
22
+ switch,
23
+ value.map do |hash_key, hash_value|
24
+ "'#{hash_key}=#{as_string(hash_value)}'"
25
+ end,
26
+ separator: ' '
27
+ )
28
+ end
29
+
30
+ def apply_array(builder)
31
+ builder.with_repeated_option(switch, value)
32
+ end
33
+
34
+ def as_string(value)
35
+ value.is_a?(String) ? value : JSON.generate(value)
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,41 @@
1
+ module RubyTerraform
2
+ module Options
3
+ class Switch
4
+ def initialize(switch)
5
+ @switch_without_prefix = switch[0] == '-' ? switch[1..] : switch
6
+ end
7
+
8
+ def to_s
9
+ "-#{switch_without_prefix}"
10
+ end
11
+
12
+ def as_key
13
+ snake_case.to_sym
14
+ end
15
+
16
+ def as_plural_key
17
+ "#{snake_case}s".to_sym
18
+ end
19
+
20
+ def ==(other)
21
+ to_s == other
22
+ end
23
+
24
+ def eql?(other)
25
+ to_s == other
26
+ end
27
+
28
+ def hash
29
+ to_s.hash
30
+ end
31
+
32
+ private
33
+
34
+ attr_reader :switch_without_prefix
35
+
36
+ def snake_case
37
+ switch_without_prefix.gsub('-', '_')
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,29 @@
1
+ module RubyTerraform
2
+ module Options
3
+ module Values
4
+ module Boolean
5
+ def coerce_value(value)
6
+ @value = to_boolean(value)
7
+ end
8
+
9
+ private
10
+
11
+ def to_boolean(value)
12
+ return nil if value.nil?
13
+ return value if a_boolean?(value)
14
+ return true if true_as_string?(value)
15
+
16
+ false
17
+ end
18
+
19
+ def a_boolean?(value)
20
+ value.is_a?(TrueClass) || value.is_a?(FalseClass)
21
+ end
22
+
23
+ def true_as_string?(value)
24
+ value.respond_to?(:downcase) && value.downcase == 'true'
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,20 +1,24 @@
1
1
  module RubyTerraform
2
2
  class Output
3
- def self.for(opts)
4
- name = opts[:name]
5
- backend_config = opts[:backend_config]
3
+ class << self
4
+ def for(opts)
5
+ Dir.chdir(create_config_directory(opts)) do
6
+ RubyTerraform.init(backend_config: opts[:backend_config])
7
+ RubyTerraform.output(name: opts[:name])
8
+ end
9
+ end
6
10
 
7
- source_directory = opts[:source_directory]
8
- work_directory = opts[:work_directory]
11
+ private
9
12
 
10
- configuration_directory = File.join(work_directory, source_directory)
13
+ def create_config_directory(opts)
14
+ source_directory = opts[:source_directory]
15
+ work_directory = opts[:work_directory]
11
16
 
12
- FileUtils.mkdir_p File.dirname(configuration_directory)
13
- FileUtils.cp_r source_directory, configuration_directory
17
+ configuration_directory = File.join(work_directory, source_directory)
18
+ FileUtils.mkdir_p File.dirname(configuration_directory)
19
+ FileUtils.cp_r source_directory, configuration_directory
14
20
 
15
- Dir.chdir(configuration_directory) do
16
- RubyTerraform.init(backend_config: backend_config)
17
- RubyTerraform.output(name: name)
21
+ configuration_directory
18
22
  end
19
23
  end
20
24
  end
@@ -1,3 +1,3 @@
1
1
  module RubyTerraform
2
- VERSION = "0.65.0.pre.1"
2
+ VERSION = '0.65.0.pre.6'.freeze
3
3
  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: 0.65.0.pre.1
4
+ version: 0.65.0.pre.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toby Clemson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-26 00:00:00.000000000 Z
11
+ date: 2021-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lino
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: '2.3'
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: '1.5'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,34 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '2.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: guard
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.16'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.16'
83
+ - !ruby/object:Gem::Dependency
84
+ name: guard-rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '4.7'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '4.7'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: rake
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -151,33 +179,47 @@ dependencies:
151
179
  - !ruby/object:Gem::Version
152
180
  version: '3.9'
153
181
  - !ruby/object:Gem::Dependency
154
- name: guard
182
+ name: rubocop
155
183
  requirement: !ruby/object:Gem::Requirement
156
184
  requirements:
157
- - - ">="
185
+ - - "~>"
158
186
  - !ruby/object:Gem::Version
159
- version: '0'
187
+ version: '1.12'
160
188
  type: :development
161
189
  prerelease: false
162
190
  version_requirements: !ruby/object:Gem::Requirement
163
191
  requirements:
164
- - - ">="
192
+ - - "~>"
165
193
  - !ruby/object:Gem::Version
166
- version: '0'
194
+ version: '1.12'
167
195
  - !ruby/object:Gem::Dependency
168
- name: guard-rspec
196
+ name: rubocop-rspec
169
197
  requirement: !ruby/object:Gem::Requirement
170
198
  requirements:
171
- - - ">="
199
+ - - "~>"
172
200
  - !ruby/object:Gem::Version
173
- version: '0'
201
+ version: '2.2'
174
202
  type: :development
175
203
  prerelease: false
176
204
  version_requirements: !ruby/object:Gem::Requirement
177
205
  requirements:
178
- - - ">="
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '2.2'
209
+ - !ruby/object:Gem::Dependency
210
+ name: simplecov
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.21'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
179
221
  - !ruby/object:Gem::Version
180
- version: '0'
222
+ version: '0.21'
181
223
  description: Wraps the Terraform CLI so that Terraform can be invoked from a Ruby
182
224
  script or Rakefile.
183
225
  email:
@@ -214,6 +256,13 @@ files:
214
256
  - lib/ruby_terraform/commands/workspace.rb
215
257
  - lib/ruby_terraform/errors.rb
216
258
  - lib/ruby_terraform/errors/execution_error.rb
259
+ - lib/ruby_terraform/options/base.rb
260
+ - lib/ruby_terraform/options/boolean.rb
261
+ - lib/ruby_terraform/options/factory.rb
262
+ - lib/ruby_terraform/options/flag.rb
263
+ - lib/ruby_terraform/options/standard.rb
264
+ - lib/ruby_terraform/options/switch.rb
265
+ - lib/ruby_terraform/options/values/boolean.rb
217
266
  - lib/ruby_terraform/output.rb
218
267
  - lib/ruby_terraform/version.rb
219
268
  homepage: https://github.com/infrablocks/ruby_terraform