ruby-terraform 0.65.0.pre.12 → 1.0.0
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 +23 -17
- data/README.md +148 -414
- data/Rakefile +25 -0
- data/lib/ruby_terraform.rb +1365 -41
- data/lib/ruby_terraform/commands.rb +0 -2
- data/lib/ruby_terraform/commands/apply.rb +78 -4
- data/lib/ruby_terraform/commands/base.rb +13 -2
- data/lib/ruby_terraform/commands/destroy.rb +71 -4
- data/lib/ruby_terraform/commands/force_unlock.rb +33 -3
- data/lib/ruby_terraform/commands/format.rb +45 -2
- data/lib/ruby_terraform/commands/get.rb +35 -2
- data/lib/ruby_terraform/commands/graph.rb +48 -2
- data/lib/ruby_terraform/commands/import.rb +98 -3
- data/lib/ruby_terraform/commands/init.rb +84 -3
- data/lib/ruby_terraform/commands/login.rb +26 -2
- data/lib/ruby_terraform/commands/logout.rb +23 -2
- data/lib/ruby_terraform/commands/output.rb +34 -2
- data/lib/ruby_terraform/commands/plan.rb +72 -3
- data/lib/ruby_terraform/commands/providers.rb +30 -2
- data/lib/ruby_terraform/commands/providers_lock.rb +72 -3
- data/lib/ruby_terraform/commands/providers_mirror.rb +44 -2
- data/lib/ruby_terraform/commands/providers_schema.rb +21 -2
- data/lib/ruby_terraform/commands/refresh.rb +70 -3
- data/lib/ruby_terraform/commands/show.rb +26 -3
- data/lib/ruby_terraform/commands/state_list.rb +54 -3
- data/lib/ruby_terraform/commands/state_move.rb +64 -6
- data/lib/ruby_terraform/commands/state_pull.rb +24 -2
- data/lib/ruby_terraform/commands/state_push.rb +49 -3
- data/lib/ruby_terraform/commands/state_remove.rb +55 -7
- data/lib/ruby_terraform/commands/state_replace_provider.rb +39 -6
- data/lib/ruby_terraform/commands/state_show.rb +26 -2
- data/lib/ruby_terraform/commands/taint.rb +63 -2
- data/lib/ruby_terraform/commands/untaint.rb +55 -2
- data/lib/ruby_terraform/commands/validate.rb +51 -6
- data/lib/ruby_terraform/commands/workspace_delete.rb +29 -7
- data/lib/ruby_terraform/commands/workspace_list.rb +21 -6
- data/lib/ruby_terraform/commands/workspace_new.rb +28 -7
- data/lib/ruby_terraform/commands/workspace_select.rb +23 -7
- data/lib/ruby_terraform/commands/workspace_show.rb +17 -2
- data/lib/ruby_terraform/options.rb +1 -1
- data/lib/ruby_terraform/options/definition.rb +6 -2
- data/lib/ruby_terraform/options/definitions.rb +12 -3
- data/lib/ruby_terraform/options/{common.rb → global.rb} +2 -1
- data/lib/ruby_terraform/options/types.rb +0 -1
- data/lib/ruby_terraform/options/types/flag.rb +8 -4
- data/lib/ruby_terraform/options/types/standard.rb +20 -6
- data/lib/ruby_terraform/version.rb +1 -1
- data/ruby_terraform.gemspec +3 -2
- metadata +25 -14
- data/lib/ruby_terraform/commands/clean.rb +0 -26
- data/lib/ruby_terraform/commands/remote_config.rb +0 -25
- data/lib/ruby_terraform/options/types/base.rb +0 -19
@@ -1,23 +1,39 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'base'
|
4
|
-
require_relative '../options/
|
4
|
+
require_relative '../options/global'
|
5
5
|
|
6
6
|
module RubyTerraform
|
7
7
|
module Commands
|
8
|
+
# Wraps the +terraform workspace select+ command which selects a workspace.
|
9
|
+
#
|
10
|
+
# For options accepted on construction, see {#initialize}.
|
11
|
+
#
|
12
|
+
# When executing an instance of {WorkspaceSelect} via {#execute}, the
|
13
|
+
# following options are supported:
|
14
|
+
#
|
15
|
+
# * +:name+: the name of the workspace to select; required.
|
16
|
+
# * +:directory+: the path to a directory containing terraform configuration
|
17
|
+
# (deprecated in terraform 0.14, removed in terraform 0.15, use +:chdir+
|
18
|
+
# instead).
|
19
|
+
# * +:chdir+: the path of a working directory to switch to before executing
|
20
|
+
# the given subcommand.
|
21
|
+
#
|
22
|
+
# @example BasicInvocation
|
23
|
+
# RubyTerraform::Commands::WorkspaceSelect.new.execute(
|
24
|
+
# name: 'example')
|
25
|
+
#
|
8
26
|
class WorkspaceSelect < Base
|
9
|
-
include RubyTerraform::Options::
|
27
|
+
include RubyTerraform::Options::Global
|
10
28
|
|
29
|
+
# @!visibility private
|
11
30
|
def subcommands
|
12
31
|
%w[workspace select]
|
13
32
|
end
|
14
33
|
|
34
|
+
# @!visibility private
|
15
35
|
def arguments(parameters)
|
16
|
-
[parameters[:
|
17
|
-
end
|
18
|
-
|
19
|
-
def parameter_defaults(_parameters)
|
20
|
-
{ directory: nil }
|
36
|
+
[parameters[:name], parameters[:directory]]
|
21
37
|
end
|
22
38
|
end
|
23
39
|
end
|
@@ -1,13 +1,28 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'base'
|
4
|
-
require_relative '../options/
|
4
|
+
require_relative '../options/global'
|
5
5
|
|
6
6
|
module RubyTerraform
|
7
7
|
module Commands
|
8
|
+
# Wraps the +terraform workspace show+ command which shows the name of the
|
9
|
+
# current workspace.
|
10
|
+
#
|
11
|
+
# For options accepted on construction, see {#initialize}.
|
12
|
+
#
|
13
|
+
# When executing an instance of {WorkspaceSelect} via {#execute}, the
|
14
|
+
# following options are supported:
|
15
|
+
#
|
16
|
+
# * +:chdir+: the path of a working directory to switch to before executing
|
17
|
+
# the given subcommand.
|
18
|
+
#
|
19
|
+
# @example Basic Invocation
|
20
|
+
# RubyTerraform::Commands::WorkspaceShow.new.execute
|
21
|
+
#
|
8
22
|
class WorkspaceShow < Base
|
9
|
-
include RubyTerraform::Options::
|
23
|
+
include RubyTerraform::Options::Global
|
10
24
|
|
25
|
+
# @!visibility private
|
11
26
|
def subcommands
|
12
27
|
%w[workspace show]
|
13
28
|
end
|
@@ -16,9 +16,11 @@ module RubyTerraform
|
|
16
16
|
:override_keys,
|
17
17
|
:extra_keys,
|
18
18
|
:separator,
|
19
|
+
:placement,
|
19
20
|
:repeatable?
|
20
21
|
)
|
21
|
-
|
22
|
+
# rubocop:disable Metrics/MethodLength
|
23
|
+
def initialize(opts)
|
22
24
|
raise 'Missing name.' unless opts[:name]
|
23
25
|
|
24
26
|
super(
|
@@ -27,6 +29,7 @@ module RubyTerraform
|
|
27
29
|
value_type: Values.resolve(opts[:value_type]) || Values::String,
|
28
30
|
repeatable: opts[:repeatable] || false,
|
29
31
|
separator: opts[:separator],
|
32
|
+
placement: opts[:placement],
|
30
33
|
extra_keys:
|
31
34
|
{ singular: [], plural: [] }
|
32
35
|
.merge(opts[:extra_keys] || {}),
|
@@ -35,6 +38,7 @@ module RubyTerraform
|
|
35
38
|
.merge(opts[:override_keys] || {})
|
36
39
|
)
|
37
40
|
end
|
41
|
+
# rubocop:enable Metrics/MethodLength
|
38
42
|
|
39
43
|
def matches?(name)
|
40
44
|
@name == Name.new(name)
|
@@ -95,7 +99,7 @@ module RubyTerraform
|
|
95
99
|
end
|
96
100
|
|
97
101
|
def build_option(value)
|
98
|
-
option_type.new(name, value, separator: separator)
|
102
|
+
option_type.new(name, value, separator: separator, placement: placement)
|
99
103
|
end
|
100
104
|
|
101
105
|
def build_value(value)
|
@@ -22,7 +22,7 @@ module RubyTerraform
|
|
22
22
|
end,
|
23
23
|
|
24
24
|
# string repeatable options
|
25
|
-
%w[-var-file -target -platform].map do |o|
|
25
|
+
%w[-var-file -target -platform -plugin-dir].map do |o|
|
26
26
|
definition(
|
27
27
|
name: o, option_type: :standard, value_type: :string,
|
28
28
|
repeatable: true
|
@@ -56,6 +56,7 @@ module RubyTerraform
|
|
56
56
|
-detailed-exitcode
|
57
57
|
-diff
|
58
58
|
-draw-cycles
|
59
|
+
-dry-run
|
59
60
|
-force
|
60
61
|
-force-copy
|
61
62
|
-ignore-remote-version
|
@@ -73,14 +74,15 @@ module RubyTerraform
|
|
73
74
|
%w[
|
74
75
|
-backup
|
75
76
|
-backup-out
|
76
|
-
-chdir
|
77
77
|
-from-module
|
78
78
|
-fs-mirror
|
79
|
+
-id
|
79
80
|
-lock-timeout
|
81
|
+
-lockfile
|
80
82
|
-module-depth
|
81
83
|
-net-mirror
|
82
84
|
-parallelism
|
83
|
-
-
|
85
|
+
-plan
|
84
86
|
-provider
|
85
87
|
-state
|
86
88
|
-state-out
|
@@ -97,6 +99,13 @@ module RubyTerraform
|
|
97
99
|
definition(
|
98
100
|
name: '-out', option_type: :standard, value_type: :string,
|
99
101
|
extra_keys: { singular: %i[plan] }
|
102
|
+
),
|
103
|
+
|
104
|
+
# global options
|
105
|
+
definition(
|
106
|
+
name: '-chdir', option_type: :standard, value_type: :string,
|
107
|
+
placement: :after_command,
|
108
|
+
extra_keys: { singular: %i[working_directory] }
|
100
109
|
)
|
101
110
|
].flatten.freeze
|
102
111
|
end
|
@@ -1,12 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative 'base'
|
4
|
-
require_relative '../values/boolean'
|
5
|
-
|
6
3
|
module RubyTerraform
|
7
4
|
module Options
|
8
5
|
module Types
|
9
|
-
class Flag <
|
6
|
+
class Flag < ImmutableStruct.new(
|
7
|
+
:name,
|
8
|
+
:value
|
9
|
+
)
|
10
|
+
def initialize(name, value, **_opts)
|
11
|
+
super(name: name, value: value)
|
12
|
+
end
|
13
|
+
|
10
14
|
def apply(builder)
|
11
15
|
value.resolve ? builder.with_flag(name) : builder
|
12
16
|
end
|
@@ -1,15 +1,29 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'json'
|
4
|
-
|
5
|
-
require_relative 'base'
|
6
|
-
|
7
3
|
module RubyTerraform
|
8
4
|
module Options
|
9
5
|
module Types
|
10
|
-
class Standard <
|
6
|
+
class Standard < ImmutableStruct.new(
|
7
|
+
:name,
|
8
|
+
:value,
|
9
|
+
:separator,
|
10
|
+
:placement
|
11
|
+
)
|
12
|
+
def initialize(name, value, **opts)
|
13
|
+
super(
|
14
|
+
name: name, value: value,
|
15
|
+
separator: opts[:separator],
|
16
|
+
placement: opts[:placement]
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
11
20
|
def apply(builder)
|
12
|
-
builder.with_option(
|
21
|
+
builder.with_option(
|
22
|
+
name,
|
23
|
+
value.render,
|
24
|
+
separator: separator,
|
25
|
+
placement: placement
|
26
|
+
)
|
13
27
|
end
|
14
28
|
end
|
15
29
|
end
|
data/ruby_terraform.gemspec
CHANGED
@@ -38,8 +38,8 @@ Gem::Specification.new do |spec|
|
|
38
38
|
|
39
39
|
spec.required_ruby_version = '>= 2.6'
|
40
40
|
|
41
|
-
spec.add_dependency 'immutable-struct', '
|
42
|
-
spec.add_dependency 'lino', '
|
41
|
+
spec.add_dependency 'immutable-struct', '~> 2.4'
|
42
|
+
spec.add_dependency 'lino', '~> 2.7'
|
43
43
|
|
44
44
|
spec.add_development_dependency 'bundler', '~> 2.0'
|
45
45
|
spec.add_development_dependency 'faker', '~> 2.17'
|
@@ -56,4 +56,5 @@ Gem::Specification.new do |spec|
|
|
56
56
|
spec.add_development_dependency 'rubocop-rake', '~> 0.5'
|
57
57
|
spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
|
58
58
|
spec.add_development_dependency 'simplecov', '~> 0.21'
|
59
|
+
spec.add_development_dependency 'yard', '~> 0.9'
|
59
60
|
end
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-terraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
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-
|
11
|
+
date: 2021-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: immutable-struct
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.4'
|
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
26
|
version: '2.4'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: lino
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '2.
|
33
|
+
version: '2.7'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '2.
|
40
|
+
version: '2.7'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,6 +248,20 @@ dependencies:
|
|
248
248
|
- - "~>"
|
249
249
|
- !ruby/object:Gem::Version
|
250
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'
|
251
265
|
description: Wraps the Terraform CLI so that Terraform can be invoked from a Ruby
|
252
266
|
script or Rakefile.
|
253
267
|
email:
|
@@ -269,7 +283,6 @@ files:
|
|
269
283
|
- lib/ruby_terraform/commands.rb
|
270
284
|
- lib/ruby_terraform/commands/apply.rb
|
271
285
|
- lib/ruby_terraform/commands/base.rb
|
272
|
-
- lib/ruby_terraform/commands/clean.rb
|
273
286
|
- lib/ruby_terraform/commands/destroy.rb
|
274
287
|
- lib/ruby_terraform/commands/force_unlock.rb
|
275
288
|
- lib/ruby_terraform/commands/format.rb
|
@@ -286,7 +299,6 @@ files:
|
|
286
299
|
- lib/ruby_terraform/commands/providers_mirror.rb
|
287
300
|
- lib/ruby_terraform/commands/providers_schema.rb
|
288
301
|
- lib/ruby_terraform/commands/refresh.rb
|
289
|
-
- lib/ruby_terraform/commands/remote_config.rb
|
290
302
|
- lib/ruby_terraform/commands/show.rb
|
291
303
|
- lib/ruby_terraform/commands/state_list.rb
|
292
304
|
- lib/ruby_terraform/commands/state_move.rb
|
@@ -306,13 +318,12 @@ files:
|
|
306
318
|
- lib/ruby_terraform/errors.rb
|
307
319
|
- lib/ruby_terraform/errors/execution_error.rb
|
308
320
|
- lib/ruby_terraform/options.rb
|
309
|
-
- lib/ruby_terraform/options/common.rb
|
310
321
|
- lib/ruby_terraform/options/definition.rb
|
311
322
|
- lib/ruby_terraform/options/definitions.rb
|
312
323
|
- lib/ruby_terraform/options/factory.rb
|
324
|
+
- lib/ruby_terraform/options/global.rb
|
313
325
|
- lib/ruby_terraform/options/name.rb
|
314
326
|
- lib/ruby_terraform/options/types.rb
|
315
|
-
- lib/ruby_terraform/options/types/base.rb
|
316
327
|
- lib/ruby_terraform/options/types/flag.rb
|
317
328
|
- lib/ruby_terraform/options/types/standard.rb
|
318
329
|
- lib/ruby_terraform/options/values.rb
|
@@ -339,9 +350,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
339
350
|
version: '2.6'
|
340
351
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
341
352
|
requirements:
|
342
|
-
- - "
|
353
|
+
- - ">="
|
343
354
|
- !ruby/object:Gem::Version
|
344
|
-
version:
|
355
|
+
version: '0'
|
345
356
|
requirements: []
|
346
357
|
rubygems_version: 3.0.1
|
347
358
|
signing_key:
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
module RubyTerraform
|
6
|
-
module Commands
|
7
|
-
class Clean
|
8
|
-
attr_reader :logger
|
9
|
-
|
10
|
-
def initialize(directory: nil, logger: nil)
|
11
|
-
@directory = directory || '.terraform'
|
12
|
-
@logger = logger || RubyTerraform.configuration.logger
|
13
|
-
end
|
14
|
-
|
15
|
-
def execute(parameters = {})
|
16
|
-
directory = parameters[:directory] || @directory
|
17
|
-
begin
|
18
|
-
logger.info "Cleaning terraform directory '#{directory}'."
|
19
|
-
FileUtils.rm_r(directory, secure: true)
|
20
|
-
rescue Errno::ENOENT => e
|
21
|
-
logger.error "Couldn't clean '#{directory}': #{e.message}"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative 'base'
|
4
|
-
|
5
|
-
module RubyTerraform
|
6
|
-
module Commands
|
7
|
-
class RemoteConfig < Base
|
8
|
-
def subcommands
|
9
|
-
%w[remote config]
|
10
|
-
end
|
11
|
-
|
12
|
-
def options
|
13
|
-
%w[
|
14
|
-
-backend
|
15
|
-
-backend-config
|
16
|
-
-no-color
|
17
|
-
]
|
18
|
-
end
|
19
|
-
|
20
|
-
def parameter_defaults(_parameters)
|
21
|
-
{ backend_config: {} }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|