ruby-terraform 0.65.0.pre.7 → 0.65.0.pre.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +11 -6
- data/Rakefile +7 -3
- data/bin/console +1 -0
- data/lib/ruby-terraform.rb +2 -0
- data/lib/ruby_terraform.rb +61 -4
- data/lib/ruby_terraform/commands.rb +31 -8
- data/lib/ruby_terraform/commands/apply.rb +19 -12
- data/lib/ruby_terraform/commands/base.rb +32 -39
- data/lib/ruby_terraform/commands/clean.rb +4 -2
- data/lib/ruby_terraform/commands/destroy.rb +24 -13
- data/lib/ruby_terraform/commands/force_unlock.rb +24 -0
- data/lib/ruby_terraform/commands/format.rb +16 -12
- data/lib/ruby_terraform/commands/get.rb +13 -8
- data/lib/ruby_terraform/commands/graph.rb +24 -0
- data/lib/ruby_terraform/commands/import.rb +22 -11
- data/lib/ruby_terraform/commands/init.rb +21 -9
- 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 +17 -15
- data/lib/ruby_terraform/commands/plan.rb +20 -9
- 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 +23 -8
- data/lib/ruby_terraform/commands/remote_config.rb +8 -6
- data/lib/ruby_terraform/commands/show.rb +13 -9
- 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 +14 -13
- 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/errors.rb +2 -0
- data/lib/ruby_terraform/errors/execution_error.rb +2 -0
- data/lib/ruby_terraform/options.rb +28 -3
- data/lib/ruby_terraform/options/common.rb +11 -0
- data/lib/ruby_terraform/options/definition.rb +170 -0
- data/lib/ruby_terraform/options/definitions.rb +103 -0
- data/lib/ruby_terraform/options/factory.rb +12 -101
- data/lib/ruby_terraform/options/name.rb +13 -19
- data/lib/ruby_terraform/options/types.rb +27 -0
- data/lib/ruby_terraform/options/types/base.rb +8 -13
- data/lib/ruby_terraform/options/types/flag.rb +3 -3
- data/lib/ruby_terraform/options/types/standard.rb +3 -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 +15 -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 +9 -7
- data/lib/ruby_terraform/version.rb +3 -1
- data/ruby_terraform.gemspec +59 -0
- metadata +64 -6
- data/lib/ruby_terraform/commands/workspace.rb +0 -24
- data/lib/ruby_terraform/options/types/boolean.rb +0 -16
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'fileutils'
|
2
4
|
|
3
5
|
module RubyTerraform
|
@@ -10,8 +12,8 @@ module RubyTerraform
|
|
10
12
|
@logger = logger || RubyTerraform.configuration.logger
|
11
13
|
end
|
12
14
|
|
13
|
-
def execute(
|
14
|
-
directory =
|
15
|
+
def execute(parameters = {})
|
16
|
+
directory = parameters[:directory] || @directory
|
15
17
|
begin
|
16
18
|
logger.info "Cleaning terraform directory '#{directory}'."
|
17
19
|
FileUtils.rm_r(directory, secure: true)
|
@@ -1,35 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
2
5
|
|
3
6
|
module RubyTerraform
|
4
7
|
module Commands
|
5
8
|
class Destroy < Base
|
6
|
-
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[destroy]
|
13
|
+
end
|
14
|
+
|
15
|
+
def options # rubocop:disable Metrics/MethodLength
|
7
16
|
%w[
|
8
|
-
-auto-approve
|
9
17
|
-backup
|
10
|
-
-
|
18
|
+
-compact-warnings
|
19
|
+
-lock
|
20
|
+
-lock-timeout
|
21
|
+
-input
|
22
|
+
-auto-approve
|
11
23
|
-no-color
|
24
|
+
-parallelism
|
25
|
+
-refresh
|
12
26
|
-state
|
27
|
+
-state-out
|
13
28
|
-target
|
14
29
|
-var
|
15
30
|
-var-file
|
16
|
-
]
|
17
|
-
end
|
18
|
-
|
19
|
-
def subcommands(_values)
|
20
|
-
%w[destroy]
|
31
|
+
] + super
|
21
32
|
end
|
22
33
|
|
23
|
-
def arguments(
|
24
|
-
[
|
34
|
+
def arguments(parameters)
|
35
|
+
[parameters[:directory]]
|
25
36
|
end
|
26
37
|
|
27
|
-
def
|
38
|
+
def parameter_defaults(_parameters)
|
28
39
|
{ vars: {}, var_files: [], targets: [] }
|
29
40
|
end
|
30
41
|
|
31
|
-
def
|
32
|
-
{ backup:
|
42
|
+
def parameter_overrides(parameters)
|
43
|
+
{ backup: parameters[:no_backup] ? '-' : parameters[:backup] }
|
33
44
|
end
|
34
45
|
end
|
35
46
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
5
|
+
|
6
|
+
module RubyTerraform
|
7
|
+
module Commands
|
8
|
+
class ForceUnlock < Base
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[force-unlock]
|
13
|
+
end
|
14
|
+
|
15
|
+
def options
|
16
|
+
%w[-force] + super
|
17
|
+
end
|
18
|
+
|
19
|
+
def arguments(parameters)
|
20
|
+
[parameters[:lock_id]]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,25 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
2
5
|
|
3
6
|
module RubyTerraform
|
4
7
|
module Commands
|
5
8
|
class Format < Base
|
6
|
-
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[fmt]
|
13
|
+
end
|
14
|
+
|
15
|
+
def options
|
7
16
|
%w[
|
8
|
-
-check
|
9
|
-
-diff
|
10
17
|
-list
|
11
|
-
-no-color
|
12
|
-
-recursive
|
13
18
|
-write
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
%w[fmt]
|
19
|
+
-diff
|
20
|
+
-check
|
21
|
+
-recursive
|
22
|
+
] + super
|
19
23
|
end
|
20
24
|
|
21
|
-
def arguments(
|
22
|
-
[
|
25
|
+
def arguments(parameters)
|
26
|
+
[parameters[:directory]]
|
23
27
|
end
|
24
28
|
end
|
25
29
|
end
|
@@ -1,21 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
2
5
|
|
3
6
|
module RubyTerraform
|
4
7
|
module Commands
|
5
8
|
class Get < Base
|
6
|
-
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[get]
|
13
|
+
end
|
14
|
+
|
15
|
+
def options
|
7
16
|
%w[
|
8
17
|
-no-color
|
9
18
|
-update
|
10
|
-
]
|
11
|
-
end
|
12
|
-
|
13
|
-
def subcommands(_values)
|
14
|
-
%w[get]
|
19
|
+
] + super
|
15
20
|
end
|
16
21
|
|
17
|
-
def arguments(
|
18
|
-
[
|
22
|
+
def arguments(parameters)
|
23
|
+
[parameters[:directory]]
|
19
24
|
end
|
20
25
|
end
|
21
26
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
5
|
+
|
6
|
+
module RubyTerraform
|
7
|
+
module Commands
|
8
|
+
class Graph < Base
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[graph]
|
13
|
+
end
|
14
|
+
|
15
|
+
def options
|
16
|
+
%w[
|
17
|
+
-draw-cycles
|
18
|
+
-type
|
19
|
+
-module-depth
|
20
|
+
] + super
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,34 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
2
5
|
|
3
6
|
module RubyTerraform
|
4
7
|
module Commands
|
5
8
|
class Import < Base
|
6
|
-
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[import]
|
13
|
+
end
|
14
|
+
|
15
|
+
def options # rubocop:disable Metrics/MethodLength
|
7
16
|
%w[
|
8
17
|
-config
|
9
18
|
-backup
|
10
19
|
-input
|
20
|
+
-lock
|
21
|
+
-lock-timeout
|
11
22
|
-no-color
|
23
|
+
-parallelism
|
24
|
+
-provider
|
12
25
|
-state
|
26
|
+
-state-out
|
13
27
|
-var
|
14
28
|
-var-file
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
def subcommands(_values)
|
19
|
-
%w[import]
|
29
|
+
-ignore-remote-version
|
30
|
+
] + super
|
20
31
|
end
|
21
32
|
|
22
|
-
def arguments(
|
23
|
-
[
|
33
|
+
def arguments(parameters)
|
34
|
+
[parameters[:address], parameters[:id]]
|
24
35
|
end
|
25
36
|
|
26
|
-
def
|
37
|
+
def parameter_defaults(_parameters)
|
27
38
|
{ vars: {}, var_files: [] }
|
28
39
|
end
|
29
40
|
|
30
|
-
def
|
31
|
-
{ backup:
|
41
|
+
def parameter_overrides(parameters)
|
42
|
+
{ backup: parameters[:no_backup] ? '-' : parameters[:backup] }
|
32
43
|
end
|
33
44
|
end
|
34
45
|
end
|
@@ -1,29 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
2
5
|
|
3
6
|
module RubyTerraform
|
4
7
|
module Commands
|
5
8
|
class Init < Base
|
6
|
-
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[init]
|
13
|
+
end
|
14
|
+
|
15
|
+
def options # rubocop:disable Metrics/MethodLength
|
7
16
|
%w[
|
8
17
|
-backend
|
9
18
|
-backend-config
|
10
19
|
-force-copy
|
11
20
|
-from-module
|
12
21
|
-get
|
22
|
+
-get-plugins
|
23
|
+
-input
|
24
|
+
-lock
|
25
|
+
-lock-timeout
|
13
26
|
-no-color
|
14
27
|
-plugin-dir
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
%w[init]
|
28
|
+
-reconfigure
|
29
|
+
-upgrade
|
30
|
+
-verify-plugins
|
31
|
+
] + super
|
20
32
|
end
|
21
33
|
|
22
|
-
def arguments(
|
23
|
-
[
|
34
|
+
def arguments(parameters)
|
35
|
+
[parameters[:path]]
|
24
36
|
end
|
25
37
|
|
26
|
-
def
|
38
|
+
def parameter_defaults(_parameters)
|
27
39
|
{ backend_config: {} }
|
28
40
|
end
|
29
41
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
5
|
+
|
6
|
+
module RubyTerraform
|
7
|
+
module Commands
|
8
|
+
class Login < Base
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[login]
|
13
|
+
end
|
14
|
+
|
15
|
+
def arguments(parameters)
|
16
|
+
[parameters[:hostname]]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
5
|
+
|
6
|
+
module RubyTerraform
|
7
|
+
module Commands
|
8
|
+
class Logout < Base
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[logout]
|
13
|
+
end
|
14
|
+
|
15
|
+
def arguments(parameters)
|
16
|
+
[parameters[:hostname]]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -1,36 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'stringio'
|
2
4
|
require_relative 'base'
|
5
|
+
require_relative '../options/common'
|
3
6
|
|
4
7
|
module RubyTerraform
|
5
8
|
module Commands
|
6
9
|
class Output < Base
|
7
|
-
|
8
|
-
return if defined?(@stdout) && @stdout.respond_to?(:string)
|
10
|
+
include RubyTerraform::Options::Common
|
9
11
|
|
10
|
-
|
12
|
+
def stdout
|
13
|
+
@stdout.respond_to?(:string) ? @stdout : (@stdout = StringIO.new)
|
11
14
|
end
|
12
15
|
|
13
|
-
def
|
16
|
+
def subcommands
|
17
|
+
%w[output]
|
18
|
+
end
|
19
|
+
|
20
|
+
def options
|
14
21
|
%w[
|
15
22
|
-json
|
16
|
-
-module
|
17
|
-
-no-color
|
18
23
|
-raw
|
24
|
+
-no-color
|
19
25
|
-state
|
20
|
-
]
|
21
|
-
end
|
22
|
-
|
23
|
-
def subcommands(_values)
|
24
|
-
%w[output]
|
26
|
+
] + super
|
25
27
|
end
|
26
28
|
|
27
|
-
def arguments(
|
28
|
-
[
|
29
|
+
def arguments(parameters)
|
30
|
+
[parameters[:name]]
|
29
31
|
end
|
30
32
|
|
31
|
-
def do_after(
|
33
|
+
def do_after(parameters)
|
32
34
|
result = stdout.string
|
33
|
-
|
35
|
+
parameters[:name] ? result.chomp : result
|
34
36
|
end
|
35
37
|
end
|
36
38
|
end
|
@@ -1,30 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
2
5
|
|
3
6
|
module RubyTerraform
|
4
7
|
module Commands
|
5
8
|
class Plan < Base
|
6
|
-
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[plan]
|
13
|
+
end
|
14
|
+
|
15
|
+
def options # rubocop:disable Metrics/MethodLength
|
7
16
|
%w[
|
17
|
+
-compact-warnings
|
8
18
|
-destroy
|
19
|
+
-detailed-exitcode
|
9
20
|
-input
|
21
|
+
-lock
|
22
|
+
-lock-timeout
|
10
23
|
-no-color
|
11
24
|
-out
|
25
|
+
-parallelism
|
26
|
+
-refresh
|
12
27
|
-state
|
13
28
|
-target
|
14
29
|
-var
|
15
30
|
-var-file
|
16
|
-
]
|
17
|
-
end
|
18
|
-
|
19
|
-
def subcommands(_values)
|
20
|
-
%w[plan]
|
31
|
+
] + super
|
21
32
|
end
|
22
33
|
|
23
|
-
def arguments(
|
24
|
-
[
|
34
|
+
def arguments(parameters)
|
35
|
+
[parameters[:directory]]
|
25
36
|
end
|
26
37
|
|
27
|
-
def
|
38
|
+
def parameter_defaults(_parameters)
|
28
39
|
{ vars: {}, var_files: [], targets: [] }
|
29
40
|
end
|
30
41
|
end
|