ruby-terraform 0.65.0.pre.6 → 0.65.0.pre.11
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 +2 -0
- data/Gemfile.lock +4 -1
- data/Rakefile +7 -3
- data/bin/console +1 -0
- data/lib/ruby-terraform.rb +2 -0
- data/lib/ruby_terraform.rb +56 -3
- data/lib/ruby_terraform/commands.rb +31 -8
- data/lib/ruby_terraform/commands/apply.rb +28 -9
- data/lib/ruby_terraform/commands/base.rb +24 -26
- data/lib/ruby_terraform/commands/clean.rb +4 -2
- data/lib/ruby_terraform/commands/destroy.rb +29 -9
- data/lib/ruby_terraform/commands/force_unlock.rb +24 -0
- data/lib/ruby_terraform/commands/format.rb +17 -6
- data/lib/ruby_terraform/commands/get.rb +14 -6
- data/lib/ruby_terraform/commands/graph.rb +24 -0
- data/lib/ruby_terraform/commands/import.rb +28 -9
- data/lib/ruby_terraform/commands/init.rb +27 -8
- 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 +18 -8
- data/lib/ruby_terraform/commands/plan.rb +27 -7
- 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 +29 -7
- data/lib/ruby_terraform/commands/remote_config.rb +11 -5
- data/lib/ruby_terraform/commands/show.rb +14 -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 +15 -7
- 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 +8 -0
- data/lib/ruby_terraform/options/common.rb +11 -0
- data/lib/ruby_terraform/options/factory.rb +70 -67
- data/lib/ruby_terraform/options/{switch.rb → name.rb} +11 -7
- 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 +2 -0
- data/lib/ruby_terraform/output.rb +9 -7
- data/lib/ruby_terraform/version.rb +3 -1
- data/ruby_terraform.gemspec +58 -0
- metadata +46 -8
- data/lib/ruby_terraform/commands/workspace.rb +0 -24
- data/lib/ruby_terraform/options/base.rb +0 -22
- data/lib/ruby_terraform/options/boolean.rb +0 -14
- data/lib/ruby_terraform/options/flag.rb +0 -14
- data/lib/ruby_terraform/options/standard.rb +0 -39
@@ -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 WorkspaceList < Base
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[workspace list]
|
13
|
+
end
|
14
|
+
|
15
|
+
def arguments(parameters)
|
16
|
+
[parameters[:directory]]
|
17
|
+
end
|
18
|
+
|
19
|
+
def parameter_defaults(_parameters)
|
20
|
+
{ directory: nil }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
5
|
+
|
6
|
+
module RubyTerraform
|
7
|
+
module Commands
|
8
|
+
class WorkspaceNew < Base
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[workspace new]
|
13
|
+
end
|
14
|
+
|
15
|
+
def options
|
16
|
+
%w[
|
17
|
+
-lock
|
18
|
+
-lock-timeout
|
19
|
+
-state
|
20
|
+
] + super
|
21
|
+
end
|
22
|
+
|
23
|
+
def arguments(parameters)
|
24
|
+
[parameters[:workspace], parameters[:directory]]
|
25
|
+
end
|
26
|
+
|
27
|
+
def parameter_defaults(_parameters)
|
28
|
+
{ directory: nil }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
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 WorkspaceSelect < Base
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[workspace select]
|
13
|
+
end
|
14
|
+
|
15
|
+
def arguments(parameters)
|
16
|
+
[parameters[:workspace], parameters[:directory]]
|
17
|
+
end
|
18
|
+
|
19
|
+
def parameter_defaults(_parameters)
|
20
|
+
{ directory: nil }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative '../options/common'
|
5
|
+
|
6
|
+
module RubyTerraform
|
7
|
+
module Commands
|
8
|
+
class WorkspaceShow < Base
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
12
|
+
%w[workspace show]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,115 +1,118 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative '
|
4
|
-
require_relative '
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'name'
|
4
|
+
require_relative 'types/boolean'
|
5
|
+
require_relative 'types/flag'
|
6
|
+
require_relative 'types/standard'
|
5
7
|
|
6
8
|
module RubyTerraform
|
7
9
|
module Options
|
8
10
|
class Factory
|
9
|
-
|
11
|
+
PLURAL_OPTIONS =
|
10
12
|
Set.new(
|
11
13
|
%w[
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
-var
|
15
|
+
-target
|
16
|
+
-var-file
|
17
|
+
-platform
|
18
|
+
]
|
16
19
|
).freeze
|
17
20
|
|
18
|
-
|
21
|
+
BOOLEAN_OPTIONS =
|
19
22
|
Set.new(
|
20
23
|
%w[
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
24
|
+
-auto-approve
|
25
|
+
-backend
|
26
|
+
-get
|
27
|
+
-get-plugins
|
28
|
+
-input
|
29
|
+
-list
|
30
|
+
-lock
|
31
|
+
-refresh
|
32
|
+
-upgrade
|
33
|
+
-verify-plugins
|
34
|
+
-write
|
35
|
+
]
|
33
36
|
).freeze
|
34
37
|
|
35
|
-
|
38
|
+
FLAG_OPTIONS =
|
36
39
|
Set.new(
|
37
40
|
%w[
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
41
|
+
-allow-missing
|
42
|
+
-allow-missing-config
|
43
|
+
-check
|
44
|
+
-compact-warnings
|
45
|
+
-destroy
|
46
|
+
-detailed-exitcode
|
47
|
+
-diff
|
48
|
+
-draw-cycles
|
49
|
+
-force
|
50
|
+
-force-copy
|
51
|
+
-ignore-remote-version
|
52
|
+
-json
|
53
|
+
-no-color
|
54
|
+
-raw
|
55
|
+
-reconfigure
|
56
|
+
-recursive
|
57
|
+
-update
|
58
|
+
]
|
56
59
|
).freeze
|
57
60
|
|
58
|
-
|
61
|
+
OVERRIDE_OPTIONS =
|
59
62
|
{
|
60
63
|
config: :directory,
|
61
64
|
out: :plan
|
62
65
|
}.freeze
|
63
66
|
|
64
|
-
def self.from(
|
65
|
-
new(
|
67
|
+
def self.from(names, parameters)
|
68
|
+
new(names, parameters).from
|
66
69
|
end
|
67
70
|
|
68
71
|
private_class_method :new
|
69
72
|
|
70
|
-
def initialize(
|
71
|
-
@
|
72
|
-
@
|
73
|
+
def initialize(names, parameters)
|
74
|
+
@names = names.map { |name| Name.new(name) }
|
75
|
+
@parameters = parameters
|
73
76
|
end
|
74
77
|
|
75
78
|
def from
|
76
|
-
|
77
|
-
options.append(*
|
79
|
+
names.each_with_object([]) do |name, options|
|
80
|
+
options.append(*options_from_name(name))
|
78
81
|
end
|
79
82
|
end
|
80
83
|
|
81
84
|
private
|
82
85
|
|
83
|
-
attr_reader :
|
86
|
+
attr_reader :names, :parameters
|
84
87
|
|
85
|
-
def
|
86
|
-
return plural_options(
|
87
|
-
return boolean_option(
|
88
|
-
return flag_option(
|
89
|
-
return override_option(
|
88
|
+
def options_from_name(name)
|
89
|
+
return plural_options(name) if PLURAL_OPTIONS.include?(name)
|
90
|
+
return boolean_option(name) if BOOLEAN_OPTIONS.include?(name)
|
91
|
+
return flag_option(name) if FLAG_OPTIONS.include?(name)
|
92
|
+
return override_option(name) if OVERRIDE_OPTIONS.key?(name.as_key)
|
90
93
|
|
91
|
-
standard_option(
|
94
|
+
standard_option(name, name.as_key)
|
92
95
|
end
|
93
96
|
|
94
|
-
def boolean_option(
|
95
|
-
[Boolean.new(
|
97
|
+
def boolean_option(name)
|
98
|
+
[Types::Boolean.new(name.to_s, parameters[name.as_key])]
|
96
99
|
end
|
97
100
|
|
98
|
-
def flag_option(
|
99
|
-
[Flag.new(
|
101
|
+
def flag_option(name)
|
102
|
+
[Types::Flag.new(name.to_s, parameters[name.as_key])]
|
100
103
|
end
|
101
104
|
|
102
|
-
def standard_option(
|
103
|
-
[Standard.new(
|
105
|
+
def standard_option(name, hash_key)
|
106
|
+
[Types::Standard.new(name.to_s, parameters[hash_key])]
|
104
107
|
end
|
105
108
|
|
106
|
-
def override_option(
|
107
|
-
standard_option(
|
109
|
+
def override_option(name)
|
110
|
+
standard_option(name, OVERRIDE_OPTIONS[name.as_key])
|
108
111
|
end
|
109
112
|
|
110
|
-
def plural_options(
|
111
|
-
standard_option(
|
112
|
-
standard_option(
|
113
|
+
def plural_options(name)
|
114
|
+
standard_option(name.to_s, name.as_key) +
|
115
|
+
standard_option(name.to_s, name.as_plural_key)
|
113
116
|
end
|
114
117
|
end
|
115
118
|
end
|
@@ -1,12 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RubyTerraform
|
2
4
|
module Options
|
3
|
-
class
|
4
|
-
def initialize(
|
5
|
-
@
|
5
|
+
class Name
|
6
|
+
def initialize(name)
|
7
|
+
@name = name
|
8
|
+
end
|
9
|
+
|
10
|
+
def without_prefix
|
11
|
+
@name[0] == '-' ? @name[1..] : @name
|
6
12
|
end
|
7
13
|
|
8
14
|
def to_s
|
9
|
-
"-#{
|
15
|
+
"-#{without_prefix}"
|
10
16
|
end
|
11
17
|
|
12
18
|
def as_key
|
@@ -31,10 +37,8 @@ module RubyTerraform
|
|
31
37
|
|
32
38
|
private
|
33
39
|
|
34
|
-
attr_reader :switch_without_prefix
|
35
|
-
|
36
40
|
def snake_case
|
37
|
-
|
41
|
+
without_prefix.gsub('-', '_')
|
38
42
|
end
|
39
43
|
end
|
40
44
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module RubyTerraform
|
4
|
+
module Options
|
5
|
+
module Types
|
6
|
+
class Base
|
7
|
+
def initialize(name, value)
|
8
|
+
@name = name
|
9
|
+
coerce_value(value)
|
10
|
+
end
|
11
|
+
|
12
|
+
def apply(_builder)
|
13
|
+
raise 'not implemented'
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
attr_reader :name, :value
|
19
|
+
|
20
|
+
def coerce_value(value)
|
21
|
+
@value = value
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative '../values/boolean'
|
5
|
+
|
6
|
+
module RubyTerraform
|
7
|
+
module Options
|
8
|
+
module Types
|
9
|
+
class Boolean < Base
|
10
|
+
include Values::Boolean
|
11
|
+
|
12
|
+
def apply(builder)
|
13
|
+
builder.with_option(name, value)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
require_relative '../values/boolean'
|
5
|
+
|
6
|
+
module RubyTerraform
|
7
|
+
module Options
|
8
|
+
module Types
|
9
|
+
class Flag < Base
|
10
|
+
include Values::Boolean
|
11
|
+
|
12
|
+
def apply(builder)
|
13
|
+
value ? builder.with_flag(name) : builder
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
require_relative 'base'
|
6
|
+
|
7
|
+
module RubyTerraform
|
8
|
+
module Options
|
9
|
+
module Types
|
10
|
+
class Standard < Base
|
11
|
+
def apply(builder)
|
12
|
+
if value.respond_to?(:keys)
|
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)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|