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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a58448ed0c98cd15f8213caa98af1fca20e27ab725b3fecb9dcdb873d899c74
|
4
|
+
data.tar.gz: 484fbd1f6621cfb00422b8efe9d9eebfc5d048a720f440f9e11a946b9e14696a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c634e5a5ff4d6a4063528c44d79e167015f70f21adc4957383bdea35b4f2054f53c9083d8903eb30ab7664437607e8dd3d5cd1e22472315af6a3766714bb8eba
|
7
|
+
data.tar.gz: '0059b146054f5113031f90b402049144c38cbb0918252752f4ac9320008a4183c724732ca1fb6f28b841b9d6bf1cf7658fc004bcc0e52f76626fae6cecfd2cb4'
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruby-terraform (0.65.0.pre.
|
4
|
+
ruby-terraform (0.65.0.pre.11)
|
5
5
|
lino (>= 2.3)
|
6
6
|
|
7
7
|
GEM
|
@@ -126,6 +126,8 @@ GEM
|
|
126
126
|
unicode-display_width (>= 1.4.0, < 3.0)
|
127
127
|
rubocop-ast (1.4.1)
|
128
128
|
parser (>= 2.7.1.5)
|
129
|
+
rubocop-rake (0.5.1)
|
130
|
+
rubocop
|
129
131
|
rubocop-rspec (2.2.0)
|
130
132
|
rubocop (~> 1.0)
|
131
133
|
rubocop-ast (>= 1.1.0)
|
@@ -166,6 +168,7 @@ DEPENDENCIES
|
|
166
168
|
rake_ssh (~> 0.4)
|
167
169
|
rspec (~> 3.9)
|
168
170
|
rubocop (~> 1.12)
|
171
|
+
rubocop-rake (~> 0.5)
|
169
172
|
rubocop-rspec (~> 2.2)
|
170
173
|
ruby-terraform!
|
171
174
|
simplecov (~> 0.21)
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'yaml'
|
2
4
|
require 'rake_circle_ci'
|
3
5
|
require 'rake_github'
|
@@ -7,13 +9,14 @@ require 'securerandom'
|
|
7
9
|
require 'rspec/core/rake_task'
|
8
10
|
require 'rubocop/rake_task'
|
9
11
|
|
10
|
-
task default: [
|
11
|
-
|
12
|
-
|
12
|
+
task default: %i[
|
13
|
+
library:fix
|
14
|
+
test:unit
|
13
15
|
]
|
14
16
|
|
15
17
|
namespace :encryption do
|
16
18
|
namespace :passphrase do
|
19
|
+
desc 'Generate encryption passphrase for CI GPG key'
|
17
20
|
task :generate do
|
18
21
|
File.open('config/secrets/ci/encryption.passphrase', 'w') do |f|
|
19
22
|
f.write(SecureRandom.base64(36))
|
@@ -94,6 +97,7 @@ RakeGithub.define_repository_tasks(
|
|
94
97
|
end
|
95
98
|
|
96
99
|
namespace :pipeline do
|
100
|
+
desc 'Prepare CircleCI Pipeline'
|
97
101
|
task prepare: %i[
|
98
102
|
circle_ci:project:follow
|
99
103
|
circle_ci:env_vars:ensure
|
data/bin/console
CHANGED
data/lib/ruby-terraform.rb
CHANGED
data/lib/ruby_terraform.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'ruby_terraform/version'
|
2
4
|
require 'ruby_terraform/errors'
|
5
|
+
require 'ruby_terraform/options'
|
3
6
|
require 'ruby_terraform/commands'
|
4
7
|
require 'logger'
|
5
8
|
|
@@ -26,21 +29,67 @@ module RubyTerraform
|
|
26
29
|
clean: RubyTerraform::Commands::Clean,
|
27
30
|
destroy: RubyTerraform::Commands::Destroy,
|
28
31
|
format: RubyTerraform::Commands::Format,
|
32
|
+
force_unlock: RubyTerraform::Commands::ForceUnlock,
|
29
33
|
get: RubyTerraform::Commands::Get,
|
34
|
+
graph: RubyTerraform::Commands::Graph,
|
30
35
|
import: RubyTerraform::Commands::Import,
|
31
36
|
init: RubyTerraform::Commands::Init,
|
37
|
+
login: RubyTerraform::Commands::Login,
|
38
|
+
logout: RubyTerraform::Commands::Logout,
|
32
39
|
output: RubyTerraform::Commands::Output,
|
33
40
|
plan: RubyTerraform::Commands::Plan,
|
41
|
+
providers: RubyTerraform::Commands::Providers,
|
42
|
+
providers_lock: RubyTerraform::Commands::ProvidersLock,
|
43
|
+
providers_mirror: RubyTerraform::Commands::ProvidersMirror,
|
44
|
+
providers_schema: RubyTerraform::Commands::ProvidersSchema,
|
34
45
|
refresh: RubyTerraform::Commands::Refresh,
|
35
46
|
remote_config: RubyTerraform::Commands::RemoteConfig,
|
36
47
|
show: RubyTerraform::Commands::Show,
|
48
|
+
state_list: RubyTerraform::Commands::StateList,
|
49
|
+
state_mv: RubyTerraform::Commands::StateMove,
|
50
|
+
state_pull: RubyTerraform::Commands::StatePull,
|
51
|
+
state_push: RubyTerraform::Commands::StatePush,
|
52
|
+
state_replace_provider: RubyTerraform::Commands::StateReplaceProvider,
|
53
|
+
state_rm: RubyTerraform::Commands::StateRemove,
|
54
|
+
state_show: RubyTerraform::Commands::StateShow,
|
55
|
+
taint: RubyTerraform::Commands::Taint,
|
56
|
+
untaint: RubyTerraform::Commands::Untaint,
|
37
57
|
validate: RubyTerraform::Commands::Validate,
|
38
|
-
|
58
|
+
workspace_list: RubyTerraform::Commands::WorkspaceList,
|
59
|
+
workspace_select: RubyTerraform::Commands::WorkspaceSelect,
|
60
|
+
workspace_new: RubyTerraform::Commands::WorkspaceNew,
|
61
|
+
workspace_delete: RubyTerraform::Commands::WorkspaceDelete,
|
62
|
+
workspace_show: RubyTerraform::Commands::WorkspaceShow
|
39
63
|
}.each do |method, command_class|
|
40
|
-
define_method(method) do |
|
41
|
-
command_class.new.execute(
|
64
|
+
define_method(method) do |parameters = {}|
|
65
|
+
command_class.new.execute(parameters)
|
42
66
|
end
|
43
67
|
end
|
68
|
+
|
69
|
+
def workspace(parameters = {}) # rubocop:disable Metrics/MethodLength
|
70
|
+
case parameters[:operation]
|
71
|
+
when nil, 'list'
|
72
|
+
exec(RubyTerraform::Commands::WorkspaceList, parameters)
|
73
|
+
when 'select'
|
74
|
+
exec(RubyTerraform::Commands::WorkspaceSelect, parameters)
|
75
|
+
when 'new'
|
76
|
+
exec(RubyTerraform::Commands::WorkspaceNew, parameters)
|
77
|
+
when 'delete'
|
78
|
+
exec(RubyTerraform::Commands::WorkspaceDelete, parameters)
|
79
|
+
when 'show'
|
80
|
+
exec(RubyTerraform::Commands::WorkspaceShow, parameters)
|
81
|
+
else
|
82
|
+
raise(
|
83
|
+
"Invalid operation '#{parameters[:operation]}' supplied to workspace"
|
84
|
+
)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
def exec(command_class, parameters)
|
91
|
+
command_class.new.execute(parameters)
|
92
|
+
end
|
44
93
|
end
|
45
94
|
extend ClassMethods
|
46
95
|
|
@@ -78,5 +127,9 @@ module RubyTerraform
|
|
78
127
|
def close
|
79
128
|
@targets.each(&:close)
|
80
129
|
end
|
130
|
+
|
131
|
+
def reopen(*args)
|
132
|
+
@targets.each { |t| t.reopen(*args) }
|
133
|
+
end
|
81
134
|
end
|
82
135
|
end
|
@@ -1,17 +1,40 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require_relative 'commands/get'
|
4
|
-
require_relative 'commands/validate'
|
5
|
-
require_relative 'commands/plan'
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
6
3
|
require_relative 'commands/apply'
|
4
|
+
require_relative 'commands/clean'
|
7
5
|
require_relative 'commands/destroy'
|
6
|
+
require_relative 'commands/force_unlock'
|
7
|
+
require_relative 'commands/format'
|
8
|
+
require_relative 'commands/get'
|
9
|
+
require_relative 'commands/graph'
|
10
|
+
require_relative 'commands/import'
|
11
|
+
require_relative 'commands/init'
|
12
|
+
require_relative 'commands/login'
|
13
|
+
require_relative 'commands/logout'
|
8
14
|
require_relative 'commands/output'
|
15
|
+
require_relative 'commands/plan'
|
16
|
+
require_relative 'commands/providers'
|
17
|
+
require_relative 'commands/providers_lock'
|
18
|
+
require_relative 'commands/providers_mirror'
|
19
|
+
require_relative 'commands/providers_schema'
|
9
20
|
require_relative 'commands/refresh'
|
10
21
|
require_relative 'commands/remote_config'
|
11
22
|
require_relative 'commands/show'
|
12
|
-
require_relative 'commands/
|
13
|
-
require_relative 'commands/
|
14
|
-
require_relative 'commands/
|
23
|
+
require_relative 'commands/state_list'
|
24
|
+
require_relative 'commands/state_move'
|
25
|
+
require_relative 'commands/state_pull'
|
26
|
+
require_relative 'commands/state_push'
|
27
|
+
require_relative 'commands/state_replace_provider'
|
28
|
+
require_relative 'commands/state_remove'
|
29
|
+
require_relative 'commands/state_show'
|
30
|
+
require_relative 'commands/taint'
|
31
|
+
require_relative 'commands/untaint'
|
32
|
+
require_relative 'commands/validate'
|
33
|
+
require_relative 'commands/workspace_delete'
|
34
|
+
require_relative 'commands/workspace_list'
|
35
|
+
require_relative 'commands/workspace_new'
|
36
|
+
require_relative 'commands/workspace_select'
|
37
|
+
require_relative 'commands/workspace_show'
|
15
38
|
|
16
39
|
module RubyTerraform
|
17
40
|
module Commands
|
@@ -1,27 +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 Apply < Base
|
6
|
-
|
9
|
+
include RubyTerraform::Options::Common
|
10
|
+
|
11
|
+
def subcommands
|
7
12
|
%w[apply]
|
8
13
|
end
|
9
14
|
|
10
|
-
def
|
11
|
-
%w[
|
12
|
-
|
15
|
+
def options # rubocop:disable Metrics/MethodLength
|
16
|
+
%w[
|
17
|
+
-backup
|
18
|
+
-compact-warnings
|
19
|
+
-lock
|
20
|
+
-lock-timeout
|
21
|
+
-input
|
22
|
+
-auto-approve
|
23
|
+
-no-color
|
24
|
+
-parallelism
|
25
|
+
-refresh
|
26
|
+
-state
|
27
|
+
-state-out
|
28
|
+
-target
|
29
|
+
-var
|
30
|
+
-var-file
|
31
|
+
] + super
|
13
32
|
end
|
14
33
|
|
15
|
-
def arguments(
|
16
|
-
[
|
34
|
+
def arguments(parameters)
|
35
|
+
[parameters[:plan] || parameters[:directory]]
|
17
36
|
end
|
18
37
|
|
19
|
-
def
|
38
|
+
def parameter_defaults(_parameters)
|
20
39
|
{ vars: {}, var_files: [], targets: [] }
|
21
40
|
end
|
22
41
|
|
23
|
-
def
|
24
|
-
{ backup:
|
42
|
+
def parameter_overrides(parameters)
|
43
|
+
{ backup: parameters[:no_backup] ? '-' : parameters[:backup] }
|
25
44
|
end
|
26
45
|
end
|
27
46
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'lino'
|
2
4
|
|
3
5
|
require_relative '../errors'
|
@@ -17,10 +19,10 @@ module RubyTerraform
|
|
17
19
|
initialize_command
|
18
20
|
end
|
19
21
|
|
20
|
-
def execute(
|
21
|
-
do_before(
|
22
|
-
build_and_execute_command(
|
23
|
-
do_after(
|
22
|
+
def execute(parameters = {})
|
23
|
+
do_before(parameters)
|
24
|
+
build_and_execute_command(parameters)
|
25
|
+
do_after(parameters)
|
24
26
|
rescue Open4::SpawnError
|
25
27
|
message = "Failed while running '#{command_name}'."
|
26
28
|
logger.error(message)
|
@@ -31,8 +33,8 @@ module RubyTerraform
|
|
31
33
|
|
32
34
|
attr_reader :binary, :logger, :stdin, :stdout, :stderr
|
33
35
|
|
34
|
-
def build_and_execute_command(
|
35
|
-
command = build_command(
|
36
|
+
def build_and_execute_command(parameters)
|
37
|
+
command = build_command(parameters)
|
36
38
|
logger.debug("Running '#{command}'.")
|
37
39
|
command.execute(
|
38
40
|
stdin: stdin,
|
@@ -45,54 +47,50 @@ module RubyTerraform
|
|
45
47
|
self.class.to_s.split('::')[-1].downcase
|
46
48
|
end
|
47
49
|
|
48
|
-
def do_before(
|
50
|
+
def do_before(_parameters); end
|
49
51
|
|
50
|
-
def do_after(
|
52
|
+
def do_after(_parameters); end
|
51
53
|
|
52
54
|
private
|
53
55
|
|
54
56
|
def initialize_command; end
|
55
57
|
|
56
|
-
def build_command(
|
57
|
-
|
58
|
+
def build_command(parameters)
|
59
|
+
parameters = resolve_parameters(parameters)
|
58
60
|
|
59
61
|
Lino::CommandLineBuilder
|
60
62
|
.for_command(@binary)
|
61
63
|
.with_options_after_subcommands
|
62
64
|
.with_option_separator('=')
|
63
|
-
.with_appliables(options
|
64
|
-
.with_subcommands(
|
65
|
-
.with_arguments(arguments(
|
65
|
+
.with_appliables(Options::Factory.from(options, parameters))
|
66
|
+
.with_subcommands(subcommands)
|
67
|
+
.with_arguments(arguments(parameters))
|
66
68
|
.build
|
67
69
|
end
|
68
70
|
|
69
|
-
def
|
70
|
-
|
71
|
-
.merge(
|
72
|
-
.merge(
|
71
|
+
def resolve_parameters(parameters)
|
72
|
+
parameter_defaults(parameters)
|
73
|
+
.merge(parameters)
|
74
|
+
.merge(parameter_overrides(parameters))
|
73
75
|
end
|
74
76
|
|
75
|
-
def
|
77
|
+
def parameter_defaults(_parameters)
|
76
78
|
{}
|
77
79
|
end
|
78
80
|
|
79
|
-
def
|
81
|
+
def parameter_overrides(_parameters)
|
80
82
|
{}
|
81
83
|
end
|
82
84
|
|
83
|
-
def
|
85
|
+
def subcommands
|
84
86
|
[]
|
85
87
|
end
|
86
88
|
|
87
|
-
def options
|
88
|
-
RubyTerraform::Options::Factory.from(values, switches)
|
89
|
-
end
|
90
|
-
|
91
|
-
def switches
|
89
|
+
def options
|
92
90
|
[]
|
93
91
|
end
|
94
92
|
|
95
|
-
def arguments(
|
93
|
+
def arguments(_parameters)
|
96
94
|
[]
|
97
95
|
end
|
98
96
|
end
|
@@ -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,26 +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
|
-
|
7
|
-
%w[-backup -auto-approve -force -no-color -state -target -var -var-file]
|
8
|
-
end
|
9
|
+
include RubyTerraform::Options::Common
|
9
10
|
|
10
|
-
def
|
11
|
+
def subcommands
|
11
12
|
%w[destroy]
|
12
13
|
end
|
13
14
|
|
14
|
-
def
|
15
|
-
[
|
15
|
+
def options # rubocop:disable Metrics/MethodLength
|
16
|
+
%w[
|
17
|
+
-backup
|
18
|
+
-compact-warnings
|
19
|
+
-lock
|
20
|
+
-lock-timeout
|
21
|
+
-input
|
22
|
+
-auto-approve
|
23
|
+
-no-color
|
24
|
+
-parallelism
|
25
|
+
-refresh
|
26
|
+
-state
|
27
|
+
-state-out
|
28
|
+
-target
|
29
|
+
-var
|
30
|
+
-var-file
|
31
|
+
] + super
|
32
|
+
end
|
33
|
+
|
34
|
+
def arguments(parameters)
|
35
|
+
[parameters[:directory]]
|
16
36
|
end
|
17
37
|
|
18
|
-
def
|
38
|
+
def parameter_defaults(_parameters)
|
19
39
|
{ vars: {}, var_files: [], targets: [] }
|
20
40
|
end
|
21
41
|
|
22
|
-
def
|
23
|
-
{ backup:
|
42
|
+
def parameter_overrides(parameters)
|
43
|
+
{ backup: parameters[:no_backup] ? '-' : parameters[:backup] }
|
24
44
|
end
|
25
45
|
end
|
26
46
|
end
|