ruby-terraform 0.65.0.pre.4 → 0.65.0.pre.9
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 +8 -5
- data/Rakefile +7 -3
- data/bin/console +1 -0
- data/lib/ruby-terraform.rb +2 -0
- data/lib/ruby_terraform.rb +5 -2
- data/lib/ruby_terraform/commands.rb +2 -0
- data/lib/ruby_terraform/commands/apply.rb +32 -40
- data/lib/ruby_terraform/commands/base.rb +59 -18
- data/lib/ruby_terraform/commands/clean.rb +2 -0
- data/lib/ruby_terraform/commands/destroy.rb +28 -38
- data/lib/ruby_terraform/commands/format.rb +15 -17
- data/lib/ruby_terraform/commands/get.rb +15 -8
- data/lib/ruby_terraform/commands/import.rb +25 -34
- data/lib/ruby_terraform/commands/init.rb +21 -34
- data/lib/ruby_terraform/commands/output.rb +23 -22
- data/lib/ruby_terraform/commands/plan.rb +24 -37
- data/lib/ruby_terraform/commands/refresh.rb +22 -33
- data/lib/ruby_terraform/commands/remote_config.rb +14 -16
- data/lib/ruby_terraform/commands/show.rb +13 -13
- data/lib/ruby_terraform/commands/validate.rb +22 -30
- data/lib/ruby_terraform/commands/workspace.rb +15 -10
- data/lib/ruby_terraform/errors.rb +2 -0
- data/lib/ruby_terraform/errors/execution_error.rb +2 -0
- data/lib/ruby_terraform/options.rb +7 -0
- data/lib/ruby_terraform/options/factory.rb +118 -0
- data/lib/ruby_terraform/options/name.rb +45 -0
- data/lib/ruby_terraform/options/types/base.rb +26 -0
- data/lib/ruby_terraform/options/types/boolean.rb +18 -0
- data/lib/ruby_terraform/options/types/flag.rb +18 -0
- data/lib/ruby_terraform/options/types/standard.rb +43 -0
- data/lib/ruby_terraform/options/values/boolean.rb +31 -0
- data/lib/ruby_terraform/output.rb +17 -11
- data/lib/ruby_terraform/version.rb +3 -1
- data/ruby_terraform.gemspec +58 -0
- metadata +27 -4
@@ -1,16 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
2
4
|
|
3
5
|
module RubyTerraform
|
4
6
|
module Commands
|
5
7
|
class Get < Base
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-no-color
|
11
|
+
-update
|
12
|
+
]
|
13
|
+
end
|
14
|
+
|
15
|
+
def subcommands(_parameters)
|
16
|
+
%w[get]
|
17
|
+
end
|
18
|
+
|
19
|
+
def arguments(parameters)
|
20
|
+
[parameters[:directory]]
|
14
21
|
end
|
15
22
|
end
|
16
23
|
end
|
@@ -1,45 +1,36 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'json'
|
4
3
|
require_relative 'base'
|
5
4
|
|
6
5
|
module RubyTerraform
|
7
6
|
module Commands
|
8
7
|
class Import < Base
|
9
|
-
def
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-config
|
11
|
+
-backup
|
12
|
+
-input
|
13
|
+
-no-color
|
14
|
+
-state
|
15
|
+
-var
|
16
|
+
-var-file
|
17
|
+
]
|
18
|
+
end
|
19
|
+
|
20
|
+
def subcommands(_parameters)
|
21
|
+
%w[import]
|
22
|
+
end
|
23
|
+
|
24
|
+
def arguments(parameters)
|
25
|
+
[parameters[:address], parameters[:id]]
|
26
|
+
end
|
27
|
+
|
28
|
+
def parameter_defaults(_parameters)
|
29
|
+
{ vars: {}, var_files: [] }
|
30
|
+
end
|
21
31
|
|
22
|
-
|
23
|
-
|
24
|
-
sub = sub.with_option('-config', directory)
|
25
|
-
vars.each do |key, value|
|
26
|
-
var_value = value.is_a?(String) ? value : JSON.generate(value)
|
27
|
-
sub = sub.with_option(
|
28
|
-
'-var', "'#{key}=#{var_value}'", separator: ' '
|
29
|
-
)
|
30
|
-
end
|
31
|
-
sub = sub.with_option('-var-file', var_file) if var_file
|
32
|
-
var_files.each do |file|
|
33
|
-
sub = sub.with_option('-var-file', file)
|
34
|
-
end
|
35
|
-
sub = sub.with_option('-state', state) if state
|
36
|
-
sub = sub.with_option('-input', input) if input
|
37
|
-
sub = sub.with_option('-backup', backup) if backup
|
38
|
-
sub = sub.with_flag('-no-color') if no_color
|
39
|
-
sub
|
40
|
-
end
|
41
|
-
.with_argument(address)
|
42
|
-
.with_argument(id)
|
32
|
+
def parameter_overrides(parameters)
|
33
|
+
{ backup: parameters[:no_backup] ? '-' : parameters[:backup] }
|
43
34
|
end
|
44
35
|
end
|
45
36
|
end
|
@@ -1,45 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
2
4
|
|
3
5
|
module RubyTerraform
|
4
6
|
module Commands
|
5
7
|
class Init < Base
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-backend
|
11
|
+
-backend-config
|
12
|
+
-force-copy
|
13
|
+
-from-module
|
14
|
+
-get
|
15
|
+
-no-color
|
16
|
+
-plugin-dir
|
17
|
+
]
|
18
|
+
end
|
15
19
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
unless force_copy.nil?
|
20
|
-
sub = sub.with_option('-force-copy',
|
21
|
-
force_copy)
|
22
|
-
end
|
23
|
-
sub = sub.with_option('-get', get) unless get.nil?
|
24
|
-
sub = sub.with_option('-from-module', source) if source
|
25
|
-
sub = sub.with_flag('-no-color') if no_color
|
26
|
-
unless plugin_dir.nil?
|
27
|
-
sub = sub.with_option('-plugin-dir',
|
28
|
-
plugin_dir)
|
29
|
-
end
|
30
|
-
backend_config.each do |key, value|
|
31
|
-
sub = sub.with_option(
|
32
|
-
'-backend-config',
|
33
|
-
"'#{key}=#{value}'",
|
34
|
-
separator: ' '
|
35
|
-
)
|
36
|
-
end
|
37
|
-
sub
|
38
|
-
end
|
20
|
+
def subcommands(_parameters)
|
21
|
+
%w[init]
|
22
|
+
end
|
39
23
|
|
40
|
-
|
24
|
+
def arguments(parameters)
|
25
|
+
[parameters[:path]]
|
26
|
+
end
|
41
27
|
|
42
|
-
|
28
|
+
def parameter_defaults(_parameters)
|
29
|
+
{ backend_config: {} }
|
43
30
|
end
|
44
31
|
end
|
45
32
|
end
|
@@ -1,37 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'stringio'
|
2
4
|
require_relative 'base'
|
3
5
|
|
4
6
|
module RubyTerraform
|
5
7
|
module Commands
|
6
8
|
class Output < Base
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
def initialize_command
|
10
|
+
return if defined?(@stdout) && @stdout.respond_to?(:string)
|
11
|
+
|
12
|
+
@stdout = StringIO.new
|
11
13
|
end
|
12
14
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
def options
|
16
|
+
%w[
|
17
|
+
-json
|
18
|
+
-module
|
19
|
+
-no-color
|
20
|
+
-raw
|
21
|
+
-state
|
22
|
+
]
|
23
|
+
end
|
24
|
+
|
25
|
+
def subcommands(_parameters)
|
26
|
+
%w[output]
|
27
|
+
end
|
19
28
|
|
20
|
-
|
21
|
-
|
22
|
-
sub = sub.with_flag('-no-color') if no_color
|
23
|
-
sub = sub.with_flag('-json') if json
|
24
|
-
sub = sub.with_option('-state', state) if state
|
25
|
-
sub = sub.with_option('-module', mod) if mod
|
26
|
-
sub
|
27
|
-
end
|
28
|
-
builder = builder.with_argument(name) if name
|
29
|
-
builder
|
29
|
+
def arguments(parameters)
|
30
|
+
[parameters[:name]]
|
30
31
|
end
|
31
32
|
|
32
|
-
def do_after(
|
33
|
+
def do_after(parameters)
|
33
34
|
result = stdout.string
|
34
|
-
|
35
|
+
parameters[:name] ? result.chomp : result
|
35
36
|
end
|
36
37
|
end
|
37
38
|
end
|
@@ -1,46 +1,33 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require_relative 'base'
|
3
4
|
|
4
5
|
module RubyTerraform
|
5
6
|
module Commands
|
6
7
|
class Plan < Base
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-destroy
|
11
|
+
-input
|
12
|
+
-no-color
|
13
|
+
-out
|
14
|
+
-state
|
15
|
+
-target
|
16
|
+
-var
|
17
|
+
-var-file
|
18
|
+
]
|
19
|
+
end
|
20
|
+
|
21
|
+
def subcommands(_parameters)
|
22
|
+
%w[plan]
|
23
|
+
end
|
24
|
+
|
25
|
+
def arguments(parameters)
|
26
|
+
[parameters[:directory]]
|
27
|
+
end
|
19
28
|
|
20
|
-
|
21
|
-
|
22
|
-
vars.each do |key, value|
|
23
|
-
var_value = value.is_a?(String) ? value : JSON.generate(value)
|
24
|
-
sub = sub.with_option(
|
25
|
-
'-var', "'#{key}=#{var_value}'", separator: ' '
|
26
|
-
)
|
27
|
-
end
|
28
|
-
sub = sub.with_option('-var-file', var_file) if var_file
|
29
|
-
var_files.each do |file|
|
30
|
-
sub = sub.with_option('-var-file', file)
|
31
|
-
end
|
32
|
-
sub = sub.with_option('-target', target) if target
|
33
|
-
targets.each do |file|
|
34
|
-
sub = sub.with_option('-target', file)
|
35
|
-
end
|
36
|
-
sub = sub.with_option('-state', state) if state
|
37
|
-
sub = sub.with_option('-out', plan) if plan
|
38
|
-
sub = sub.with_option('-input', input) if input
|
39
|
-
sub = sub.with_flag('-destroy') if destroy
|
40
|
-
sub = sub.with_flag('-no-color') if no_color
|
41
|
-
sub
|
42
|
-
end
|
43
|
-
.with_argument(directory)
|
29
|
+
def parameter_defaults(_parameters)
|
30
|
+
{ vars: {}, var_files: [], targets: [] }
|
44
31
|
end
|
45
32
|
end
|
46
33
|
end
|
@@ -1,42 +1,31 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require_relative 'base'
|
3
4
|
|
4
5
|
module RubyTerraform
|
5
6
|
module Commands
|
6
7
|
class Refresh < Base
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-input
|
11
|
+
-no-color
|
12
|
+
-state
|
13
|
+
-target
|
14
|
+
-var
|
15
|
+
-var-file
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
def subcommands(_parameters)
|
20
|
+
%w[refresh]
|
21
|
+
end
|
22
|
+
|
23
|
+
def arguments(parameters)
|
24
|
+
[parameters[:directory]]
|
25
|
+
end
|
17
26
|
|
18
|
-
|
19
|
-
|
20
|
-
vars.each do |key, value|
|
21
|
-
var_value = value.is_a?(String) ? value : JSON.generate(value)
|
22
|
-
sub = sub.with_option(
|
23
|
-
'-var', "'#{key}=#{var_value}'", separator: ' '
|
24
|
-
)
|
25
|
-
end
|
26
|
-
sub = sub.with_option('-var-file', var_file) if var_file
|
27
|
-
var_files.each do |file|
|
28
|
-
sub = sub.with_option('-var-file', file)
|
29
|
-
end
|
30
|
-
sub = sub.with_option('-state', state) if state
|
31
|
-
sub = sub.with_option('-input', input) if input
|
32
|
-
sub = sub.with_option('-target', target) if target
|
33
|
-
targets.each do |target_name|
|
34
|
-
sub = sub.with_option('-target', target_name)
|
35
|
-
end
|
36
|
-
sub = sub.with_flag('-no-color') if no_color
|
37
|
-
sub
|
38
|
-
end
|
39
|
-
.with_argument(directory)
|
27
|
+
def parameter_defaults(_parameters)
|
28
|
+
{ vars: {}, var_files: [], targets: [] }
|
40
29
|
end
|
41
30
|
end
|
42
31
|
end
|
@@ -1,26 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
2
4
|
|
3
5
|
module RubyTerraform
|
4
6
|
module Commands
|
5
7
|
class RemoteConfig < Base
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-backend
|
11
|
+
-backend-config
|
12
|
+
-no-color
|
13
|
+
]
|
14
|
+
end
|
10
15
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
sub = sub.with_option('-backend', backend) if backend
|
15
|
-
backend_config.each do |key, value|
|
16
|
-
sub = sub.with_option(
|
17
|
-
'-backend-config', "'#{key}=#{value}'", separator: ' '
|
18
|
-
)
|
19
|
-
end
|
16
|
+
def subcommands(_parameters)
|
17
|
+
%w[remote config]
|
18
|
+
end
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
end
|
20
|
+
def parameter_defaults(_parameters)
|
21
|
+
{ backend_config: {} }
|
24
22
|
end
|
25
23
|
end
|
26
24
|
end
|
@@ -5,20 +5,20 @@ require_relative 'base'
|
|
5
5
|
module RubyTerraform
|
6
6
|
module Commands
|
7
7
|
class Show < Base
|
8
|
-
def
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-json
|
11
|
+
-module-depth
|
12
|
+
-no-color
|
13
|
+
]
|
14
|
+
end
|
15
|
+
|
16
|
+
def subcommands(_parameters)
|
17
|
+
%w[show]
|
18
|
+
end
|
13
19
|
|
14
|
-
|
15
|
-
|
16
|
-
sub = sub.with_option('-module-depth', module_depth) if module_depth
|
17
|
-
sub = sub.with_flag('-no-color') if no_color
|
18
|
-
sub = sub.with_flag('-json') if json_format
|
19
|
-
sub
|
20
|
-
end
|
21
|
-
.with_argument(path)
|
20
|
+
def arguments(parameters)
|
21
|
+
[parameters[:path] || parameters[:directory]]
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -1,39 +1,31 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require_relative 'base'
|
3
4
|
|
4
5
|
module RubyTerraform
|
5
6
|
module Commands
|
6
7
|
class Validate < Base
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-check-variables
|
11
|
+
-json
|
12
|
+
-no-color
|
13
|
+
-state
|
14
|
+
-var
|
15
|
+
-var-file
|
16
|
+
]
|
17
|
+
end
|
18
|
+
|
19
|
+
def subcommands(_parameters)
|
20
|
+
%w[validate]
|
21
|
+
end
|
22
|
+
|
23
|
+
def arguments(parameters)
|
24
|
+
[parameters[:directory]]
|
25
|
+
end
|
16
26
|
|
17
|
-
|
18
|
-
|
19
|
-
vars.each do |key, value|
|
20
|
-
var_value = value.is_a?(String) ? value : JSON.generate(value)
|
21
|
-
sub = sub.with_option(
|
22
|
-
'-var', "'#{key}=#{var_value}'", separator: ' '
|
23
|
-
)
|
24
|
-
end
|
25
|
-
sub = sub.with_option('-var-file', var_file) if var_file
|
26
|
-
var_files.each do |file|
|
27
|
-
sub = sub.with_option('-var-file', file)
|
28
|
-
end
|
29
|
-
sub = sub.with_option('-state', state) if state
|
30
|
-
sub = sub.with_option('-check-variables', check_variables) unless
|
31
|
-
check_variables.nil?
|
32
|
-
sub = sub.with_flag('-no-color') if no_color
|
33
|
-
sub = sub.with_flag('-json') if json_format
|
34
|
-
sub
|
35
|
-
end
|
36
|
-
.with_argument(directory)
|
27
|
+
def parameter_defaults(_parameters)
|
28
|
+
{ vars: {}, var_files: [] }
|
37
29
|
end
|
38
30
|
end
|
39
31
|
end
|