ruby-terraform 0.65.0.pre.9 → 0.65.0.pre.14
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 +4 -4
- data/Gemfile.lock +18 -10
- data/lib/ruby_terraform.rb +131 -4
- data/lib/ruby_terraform/commands.rb +29 -8
- data/lib/ruby_terraform/commands/apply.rb +85 -6
- data/lib/ruby_terraform/commands/base.rb +21 -18
- data/lib/ruby_terraform/commands/clean.rb +2 -2
- data/lib/ruby_terraform/commands/destroy.rb +17 -8
- data/lib/ruby_terraform/commands/force_unlock.rb +24 -0
- data/lib/ruby_terraform/commands/format.rb +11 -9
- data/lib/ruby_terraform/commands/get.rb +8 -5
- data/lib/ruby_terraform/commands/graph.rb +24 -0
- data/lib/ruby_terraform/commands/import.rb +15 -6
- data/lib/ruby_terraform/commands/init.rb +16 -6
- data/lib/ruby_terraform/commands/login.rb +20 -0
- data/lib/ruby_terraform/commands/logout.rb +20 -0
- data/lib/ruby_terraform/commands/output.rb +10 -10
- data/lib/ruby_terraform/commands/plan.rb +15 -6
- data/lib/ruby_terraform/commands/providers.rb +16 -0
- data/lib/ruby_terraform/commands/providers_lock.rb +28 -0
- data/lib/ruby_terraform/commands/providers_mirror.rb +24 -0
- data/lib/ruby_terraform/commands/providers_schema.rb +25 -0
- data/lib/ruby_terraform/commands/refresh.rb +19 -6
- data/lib/ruby_terraform/commands/remote_config.rb +4 -4
- data/lib/ruby_terraform/commands/show.rb +8 -6
- data/lib/ruby_terraform/commands/state_list.rb +20 -0
- data/lib/ruby_terraform/commands/state_move.rb +34 -0
- data/lib/ruby_terraform/commands/state_pull.rb +16 -0
- data/lib/ruby_terraform/commands/state_push.rb +24 -0
- data/lib/ruby_terraform/commands/state_remove.rb +32 -0
- data/lib/ruby_terraform/commands/state_replace_provider.rb +35 -0
- data/lib/ruby_terraform/commands/state_show.rb +24 -0
- data/lib/ruby_terraform/commands/taint.rb +36 -0
- data/lib/ruby_terraform/commands/untaint.rb +37 -0
- data/lib/ruby_terraform/commands/validate.rb +8 -9
- data/lib/ruby_terraform/commands/workspace_delete.rb +32 -0
- data/lib/ruby_terraform/commands/workspace_list.rb +24 -0
- data/lib/ruby_terraform/commands/workspace_new.rb +32 -0
- data/lib/ruby_terraform/commands/workspace_select.rb +24 -0
- data/lib/ruby_terraform/commands/workspace_show.rb +16 -0
- data/lib/ruby_terraform/options.rb +26 -3
- data/lib/ruby_terraform/options/common.rb +12 -0
- data/lib/ruby_terraform/options/definition.rb +172 -0
- data/lib/ruby_terraform/options/definitions.rb +103 -0
- data/lib/ruby_terraform/options/factory.rb +10 -101
- data/lib/ruby_terraform/options/name.rb +11 -19
- data/lib/ruby_terraform/options/types.rb +27 -0
- data/lib/ruby_terraform/options/types/base.rb +6 -13
- data/lib/ruby_terraform/options/types/flag.rb +1 -3
- data/lib/ruby_terraform/options/types/standard.rb +1 -27
- data/lib/ruby_terraform/options/values.rb +38 -0
- data/lib/ruby_terraform/options/values/base.rb +15 -0
- data/lib/ruby_terraform/options/values/boolean.rb +13 -11
- data/lib/ruby_terraform/options/values/complex.rb +19 -0
- data/lib/ruby_terraform/options/values/key_value.rb +21 -0
- data/lib/ruby_terraform/options/values/string.rb +17 -0
- data/lib/ruby_terraform/output.rb +7 -7
- data/lib/ruby_terraform/version.rb +1 -1
- data/ruby_terraform.gemspec +3 -1
- metadata +63 -6
- data/lib/ruby_terraform/commands/workspace.rb +0 -26
- data/lib/ruby_terraform/options/types/boolean.rb +0 -18
@@ -1,21 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'immutable-struct'
|
4
|
+
|
3
5
|
module RubyTerraform
|
4
6
|
module Options
|
5
|
-
class Name
|
7
|
+
class Name < ImmutableStruct.new(:name)
|
6
8
|
def initialize(name)
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
|
-
def without_prefix
|
11
|
-
@name[0] == '-' ? @name[1..] : @name
|
9
|
+
super(name: name.to_s)
|
12
10
|
end
|
13
11
|
|
14
|
-
def
|
12
|
+
def name
|
15
13
|
"-#{without_prefix}"
|
16
14
|
end
|
17
15
|
|
18
|
-
|
16
|
+
alias to_s name
|
17
|
+
|
18
|
+
def as_singular_key
|
19
19
|
snake_case.to_sym
|
20
20
|
end
|
21
21
|
|
@@ -23,20 +23,12 @@ module RubyTerraform
|
|
23
23
|
"#{snake_case}s".to_sym
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
to_s == other
|
28
|
-
end
|
29
|
-
|
30
|
-
def eql?(other)
|
31
|
-
to_s == other
|
32
|
-
end
|
26
|
+
private
|
33
27
|
|
34
|
-
def
|
35
|
-
|
28
|
+
def without_prefix
|
29
|
+
@name.sub(/^-+/, '')
|
36
30
|
end
|
37
31
|
|
38
|
-
private
|
39
|
-
|
40
32
|
def snake_case
|
41
33
|
without_prefix.gsub('-', '_')
|
42
34
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'types/base'
|
4
|
+
require_relative 'types/standard'
|
5
|
+
require_relative 'types/flag'
|
6
|
+
|
7
|
+
module RubyTerraform
|
8
|
+
module Options
|
9
|
+
module Types
|
10
|
+
def self.standard(name, value, **opts)
|
11
|
+
Standard.new(name, value, **opts)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.flag(name, value)
|
15
|
+
Flag.new(name, value)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.resolve(type)
|
19
|
+
case type
|
20
|
+
when :standard then Types::Standard
|
21
|
+
when :flag then Types::Flag
|
22
|
+
else type
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,24 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'immutable-struct'
|
4
|
+
|
3
5
|
module RubyTerraform
|
4
6
|
module Options
|
5
7
|
module Types
|
6
|
-
class Base
|
7
|
-
def initialize(name, value)
|
8
|
-
|
9
|
-
coerce_value(value)
|
8
|
+
class Base < ImmutableStruct.new(:name, :value, :separator)
|
9
|
+
def initialize(name, value, **opts)
|
10
|
+
super(name: name, value: value, separator: opts[:separator])
|
10
11
|
end
|
11
12
|
|
12
13
|
def apply(_builder)
|
13
|
-
raise '
|
14
|
-
end
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
attr_reader :name, :value
|
19
|
-
|
20
|
-
def coerce_value(value)
|
21
|
-
@value = value
|
14
|
+
raise 'Not implemented.'
|
22
15
|
end
|
23
16
|
end
|
24
17
|
end
|
@@ -9,33 +9,7 @@ module RubyTerraform
|
|
9
9
|
module Types
|
10
10
|
class Standard < Base
|
11
11
|
def apply(builder)
|
12
|
-
|
13
|
-
apply_hash(builder)
|
14
|
-
elsif value.respond_to?(:each)
|
15
|
-
apply_array(builder)
|
16
|
-
else
|
17
|
-
builder.with_option(name, value)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
private
|
22
|
-
|
23
|
-
def apply_hash(builder)
|
24
|
-
builder.with_repeated_option(
|
25
|
-
name,
|
26
|
-
value.map do |hash_key, hash_value|
|
27
|
-
"'#{hash_key}=#{as_string(hash_value)}'"
|
28
|
-
end,
|
29
|
-
separator: ' '
|
30
|
-
)
|
31
|
-
end
|
32
|
-
|
33
|
-
def apply_array(builder)
|
34
|
-
builder.with_repeated_option(name, value)
|
35
|
-
end
|
36
|
-
|
37
|
-
def as_string(value)
|
38
|
-
value.is_a?(String) ? value : JSON.generate(value)
|
12
|
+
builder.with_option(name, value.render, separator: separator)
|
39
13
|
end
|
40
14
|
end
|
41
15
|
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'values/boolean'
|
4
|
+
require_relative 'values/string'
|
5
|
+
require_relative 'values/complex'
|
6
|
+
require_relative 'values/key_value'
|
7
|
+
|
8
|
+
module RubyTerraform
|
9
|
+
module Options
|
10
|
+
module Values
|
11
|
+
def self.boolean(value)
|
12
|
+
Boolean.new(value)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.string(value)
|
16
|
+
String.new(value)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.complex(value)
|
20
|
+
Complex.new(value)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.key_value(key, value)
|
24
|
+
KeyValue.new(key, value)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.resolve(type)
|
28
|
+
case type
|
29
|
+
when :string then Values::String
|
30
|
+
when :boolean then Values::Boolean
|
31
|
+
when :complex then Values::Complex
|
32
|
+
when :key_value then Values::KeyValue
|
33
|
+
else type
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,23 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'base'
|
4
|
+
|
3
5
|
module RubyTerraform
|
4
6
|
module Options
|
5
7
|
module Values
|
6
|
-
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def to_boolean(value)
|
14
|
-
return nil if value.nil?
|
15
|
-
return value if a_boolean?(value)
|
16
|
-
return true if true_as_string?(value)
|
8
|
+
class Boolean < Base
|
9
|
+
def resolve
|
10
|
+
return nil if @value.nil?
|
11
|
+
return @value if a_boolean?(@value)
|
12
|
+
return true if true_as_string?(@value)
|
17
13
|
|
18
14
|
false
|
19
15
|
end
|
20
16
|
|
17
|
+
def render
|
18
|
+
resolve.nil? ? nil : resolve.to_s
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
21
23
|
def a_boolean?(value)
|
22
24
|
value.is_a?(TrueClass) || value.is_a?(FalseClass)
|
23
25
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
|
5
|
+
module RubyTerraform
|
6
|
+
module Options
|
7
|
+
module Values
|
8
|
+
class Complex < Base
|
9
|
+
def resolve
|
10
|
+
@value
|
11
|
+
end
|
12
|
+
|
13
|
+
def render
|
14
|
+
@value.is_a?(::String) ? @value : JSON.generate(value)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyTerraform
|
4
|
+
module Options
|
5
|
+
module Values
|
6
|
+
class KeyValue < ImmutableStruct.new(:key, :value)
|
7
|
+
def initialize(key, value)
|
8
|
+
super(key: key, value: value)
|
9
|
+
end
|
10
|
+
|
11
|
+
def resolve
|
12
|
+
{ key => value.resolve }
|
13
|
+
end
|
14
|
+
|
15
|
+
def render
|
16
|
+
"'#{key}=#{value.render}'"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -3,18 +3,18 @@
|
|
3
3
|
module RubyTerraform
|
4
4
|
class Output
|
5
5
|
class << self
|
6
|
-
def for(
|
7
|
-
Dir.chdir(create_config_directory(
|
8
|
-
RubyTerraform.init(backend_config:
|
9
|
-
RubyTerraform.output(name:
|
6
|
+
def for(parameters)
|
7
|
+
Dir.chdir(create_config_directory(parameters)) do
|
8
|
+
RubyTerraform.init(backend_config: parameters[:backend_config])
|
9
|
+
RubyTerraform.output(name: parameters[:name])
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
private
|
14
14
|
|
15
|
-
def create_config_directory(
|
16
|
-
source_directory =
|
17
|
-
work_directory =
|
15
|
+
def create_config_directory(parameters)
|
16
|
+
source_directory = parameters[:source_directory]
|
17
|
+
work_directory = parameters[:work_directory]
|
18
18
|
|
19
19
|
configuration_directory = File.join(work_directory, source_directory)
|
20
20
|
FileUtils.mkdir_p File.dirname(configuration_directory)
|
data/ruby_terraform.gemspec
CHANGED
@@ -38,7 +38,8 @@ Gem::Specification.new do |spec|
|
|
38
38
|
|
39
39
|
spec.required_ruby_version = '>= 2.6'
|
40
40
|
|
41
|
-
spec.add_dependency '
|
41
|
+
spec.add_dependency 'immutable-struct', '>= 2.4'
|
42
|
+
spec.add_dependency 'lino', '>= 2.5'
|
42
43
|
|
43
44
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
44
45
|
spec.add_development_dependency 'faker', '~> 2.17'
|
@@ -55,4 +56,5 @@ Gem::Specification.new do |spec|
|
|
55
56
|
spec.add_development_dependency 'rubocop-rake', '~> 0.5'
|
56
57
|
spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
|
57
58
|
spec.add_development_dependency 'simplecov', '~> 0.21'
|
59
|
+
spec.add_development_dependency 'yard', '~> 0.9'
|
58
60
|
end
|
metadata
CHANGED
@@ -1,29 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-terraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.65.0.pre.
|
4
|
+
version: 0.65.0.pre.14
|
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-04-
|
11
|
+
date: 2021-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: immutable-struct
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.4'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.4'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: lino
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
31
|
- - ">="
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version: '2.
|
33
|
+
version: '2.5'
|
20
34
|
type: :runtime
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
38
|
- - ">="
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: '2.
|
40
|
+
version: '2.5'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,6 +248,20 @@ dependencies:
|
|
234
248
|
- - "~>"
|
235
249
|
- !ruby/object:Gem::Version
|
236
250
|
version: '0.21'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: yard
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - "~>"
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0.9'
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - "~>"
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0.9'
|
237
265
|
description: Wraps the Terraform CLI so that Terraform can be invoked from a Ruby
|
238
266
|
script or Rakefile.
|
239
267
|
email:
|
@@ -257,27 +285,56 @@ files:
|
|
257
285
|
- lib/ruby_terraform/commands/base.rb
|
258
286
|
- lib/ruby_terraform/commands/clean.rb
|
259
287
|
- lib/ruby_terraform/commands/destroy.rb
|
288
|
+
- lib/ruby_terraform/commands/force_unlock.rb
|
260
289
|
- lib/ruby_terraform/commands/format.rb
|
261
290
|
- lib/ruby_terraform/commands/get.rb
|
291
|
+
- lib/ruby_terraform/commands/graph.rb
|
262
292
|
- lib/ruby_terraform/commands/import.rb
|
263
293
|
- lib/ruby_terraform/commands/init.rb
|
294
|
+
- lib/ruby_terraform/commands/login.rb
|
295
|
+
- lib/ruby_terraform/commands/logout.rb
|
264
296
|
- lib/ruby_terraform/commands/output.rb
|
265
297
|
- lib/ruby_terraform/commands/plan.rb
|
298
|
+
- lib/ruby_terraform/commands/providers.rb
|
299
|
+
- lib/ruby_terraform/commands/providers_lock.rb
|
300
|
+
- lib/ruby_terraform/commands/providers_mirror.rb
|
301
|
+
- lib/ruby_terraform/commands/providers_schema.rb
|
266
302
|
- lib/ruby_terraform/commands/refresh.rb
|
267
303
|
- lib/ruby_terraform/commands/remote_config.rb
|
268
304
|
- lib/ruby_terraform/commands/show.rb
|
305
|
+
- lib/ruby_terraform/commands/state_list.rb
|
306
|
+
- lib/ruby_terraform/commands/state_move.rb
|
307
|
+
- lib/ruby_terraform/commands/state_pull.rb
|
308
|
+
- lib/ruby_terraform/commands/state_push.rb
|
309
|
+
- lib/ruby_terraform/commands/state_remove.rb
|
310
|
+
- lib/ruby_terraform/commands/state_replace_provider.rb
|
311
|
+
- lib/ruby_terraform/commands/state_show.rb
|
312
|
+
- lib/ruby_terraform/commands/taint.rb
|
313
|
+
- lib/ruby_terraform/commands/untaint.rb
|
269
314
|
- lib/ruby_terraform/commands/validate.rb
|
270
|
-
- lib/ruby_terraform/commands/
|
315
|
+
- lib/ruby_terraform/commands/workspace_delete.rb
|
316
|
+
- lib/ruby_terraform/commands/workspace_list.rb
|
317
|
+
- lib/ruby_terraform/commands/workspace_new.rb
|
318
|
+
- lib/ruby_terraform/commands/workspace_select.rb
|
319
|
+
- lib/ruby_terraform/commands/workspace_show.rb
|
271
320
|
- lib/ruby_terraform/errors.rb
|
272
321
|
- lib/ruby_terraform/errors/execution_error.rb
|
273
322
|
- lib/ruby_terraform/options.rb
|
323
|
+
- lib/ruby_terraform/options/common.rb
|
324
|
+
- lib/ruby_terraform/options/definition.rb
|
325
|
+
- lib/ruby_terraform/options/definitions.rb
|
274
326
|
- lib/ruby_terraform/options/factory.rb
|
275
327
|
- lib/ruby_terraform/options/name.rb
|
328
|
+
- lib/ruby_terraform/options/types.rb
|
276
329
|
- lib/ruby_terraform/options/types/base.rb
|
277
|
-
- lib/ruby_terraform/options/types/boolean.rb
|
278
330
|
- lib/ruby_terraform/options/types/flag.rb
|
279
331
|
- lib/ruby_terraform/options/types/standard.rb
|
332
|
+
- lib/ruby_terraform/options/values.rb
|
333
|
+
- lib/ruby_terraform/options/values/base.rb
|
280
334
|
- lib/ruby_terraform/options/values/boolean.rb
|
335
|
+
- lib/ruby_terraform/options/values/complex.rb
|
336
|
+
- lib/ruby_terraform/options/values/key_value.rb
|
337
|
+
- lib/ruby_terraform/options/values/string.rb
|
281
338
|
- lib/ruby_terraform/output.rb
|
282
339
|
- lib/ruby_terraform/version.rb
|
283
340
|
- ruby_terraform.gemspec
|