ruby-terraform 0.65.0.pre.4 → 0.65.0.pre.9
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 +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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d49c234d709a37f69ac311de2f0beb7123e88a70053af2a30955d28ffa712b54
|
4
|
+
data.tar.gz: 5cc7e8f312bc8217e4fc3e0fdcb28a44911580c93893ccb82b1e11d6e999f026
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6abdb8f924a32c688c32b56e7908debfb9ebf1dd089b1ecab345239e15dca795d1cf722e3b0c66b2d8014f32e3a55acea945ff8fb6d52b2e0bb57fd5f64b0282
|
7
|
+
data.tar.gz: 543a406f62b65901a6b62479b919784774c7ced3bf1a4d1bae1c5f218367ecae8fc0bd4a16470a73addbc0e69033fd833c85fa41ae774448147aa62839adf809
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ruby-terraform (0.65.0.pre.
|
5
|
-
lino (>=
|
4
|
+
ruby-terraform (0.65.0.pre.9)
|
5
|
+
lino (>= 2.3)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
@@ -50,7 +50,7 @@ GEM
|
|
50
50
|
concurrent-ruby (~> 1.0)
|
51
51
|
i18n (1.8.10)
|
52
52
|
concurrent-ruby (~> 1.0)
|
53
|
-
lino (
|
53
|
+
lino (2.3.0)
|
54
54
|
hamster (~> 3.0)
|
55
55
|
open4 (~> 1.3)
|
56
56
|
listen (3.5.1)
|
@@ -101,7 +101,7 @@ GEM
|
|
101
101
|
rb-inotify (0.10.1)
|
102
102
|
ffi (~> 1.0)
|
103
103
|
regexp_parser (2.1.1)
|
104
|
-
rexml (3.2.
|
104
|
+
rexml (3.2.5)
|
105
105
|
rspec (3.10.0)
|
106
106
|
rspec-core (~> 3.10.0)
|
107
107
|
rspec-expectations (~> 3.10.0)
|
@@ -115,7 +115,7 @@ GEM
|
|
115
115
|
diff-lcs (>= 1.2.0, < 2.0)
|
116
116
|
rspec-support (~> 3.10.0)
|
117
117
|
rspec-support (3.10.2)
|
118
|
-
rubocop (1.12.
|
118
|
+
rubocop (1.12.1)
|
119
119
|
parallel (~> 1.10)
|
120
120
|
parser (>= 3.0.0.0)
|
121
121
|
rainbow (>= 2.2.2, < 4.0)
|
@@ -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
|
|
@@ -37,8 +40,8 @@ module RubyTerraform
|
|
37
40
|
validate: RubyTerraform::Commands::Validate,
|
38
41
|
workspace: RubyTerraform::Commands::Workspace
|
39
42
|
}.each do |method, command_class|
|
40
|
-
define_method(method) do |
|
41
|
-
command_class.new.execute(
|
43
|
+
define_method(method) do |parameters = {}|
|
44
|
+
command_class.new.execute(parameters)
|
42
45
|
end
|
43
46
|
end
|
44
47
|
end
|
@@ -1,49 +1,41 @@
|
|
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 Apply < Base
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
8
|
+
def subcommands(_values)
|
9
|
+
%w[apply]
|
10
|
+
end
|
11
|
+
|
12
|
+
# rubocop:disable Metrics/MethodLength
|
13
|
+
def options
|
14
|
+
%w[
|
15
|
+
-auto-approve
|
16
|
+
-backup
|
17
|
+
-input
|
18
|
+
-lock
|
19
|
+
-lock-timeout
|
20
|
+
-no-color
|
21
|
+
-state
|
22
|
+
-target
|
23
|
+
-var
|
24
|
+
-var-file
|
25
|
+
]
|
26
|
+
end
|
27
|
+
# rubocop:enable Metrics/MethodLength
|
28
|
+
|
29
|
+
def arguments(values)
|
30
|
+
[values[:plan] || values[:directory]]
|
31
|
+
end
|
32
|
+
|
33
|
+
def parameter_defaults(_parameters)
|
34
|
+
{ vars: {}, var_files: [], targets: [] }
|
35
|
+
end
|
21
36
|
|
22
|
-
|
23
|
-
|
24
|
-
vars.each do |key, value|
|
25
|
-
var_value = value.is_a?(String) ? value : JSON.generate(value)
|
26
|
-
sub = sub.with_option(
|
27
|
-
'-var', "'#{key}=#{var_value}'", separator: ' '
|
28
|
-
)
|
29
|
-
end
|
30
|
-
sub = sub.with_option('-var-file', var_file) if var_file
|
31
|
-
var_files.each do |file|
|
32
|
-
sub = sub.with_option('-var-file', file)
|
33
|
-
end
|
34
|
-
sub = sub.with_option('-target', target) if target
|
35
|
-
targets.each do |file|
|
36
|
-
sub = sub.with_option('-target', file)
|
37
|
-
end
|
38
|
-
sub = sub.with_option('-state', state) if state
|
39
|
-
sub = sub.with_option('-input', input) if input
|
40
|
-
sub = sub.with_option('-auto-approve', auto_approve) unless
|
41
|
-
auto_approve.nil?
|
42
|
-
sub = sub.with_option('-backup', backup) if backup
|
43
|
-
sub = sub.with_flag('-no-color') if no_color
|
44
|
-
sub
|
45
|
-
end
|
46
|
-
.with_argument(plan || directory)
|
37
|
+
def parameter_overrides(parameters)
|
38
|
+
{ backup: parameters[:no_backup] ? '-' : parameters[:backup] }
|
47
39
|
end
|
48
40
|
end
|
49
41
|
end
|
@@ -1,5 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'lino'
|
4
|
+
|
2
5
|
require_relative '../errors'
|
6
|
+
require_relative '../options/factory'
|
3
7
|
|
4
8
|
module RubyTerraform
|
5
9
|
module Commands
|
@@ -12,21 +16,13 @@ module RubyTerraform
|
|
12
16
|
@stdin = stdin || RubyTerraform.configuration.stdin
|
13
17
|
@stdout = stdout || RubyTerraform.configuration.stdout
|
14
18
|
@stderr = stderr || RubyTerraform.configuration.stderr
|
19
|
+
initialize_command
|
15
20
|
end
|
16
21
|
|
17
|
-
def execute(
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
command = configure_command(builder, opts).build
|
22
|
-
logger.debug("Running '#{command}'.")
|
23
|
-
|
24
|
-
command.execute(
|
25
|
-
stdin: stdin,
|
26
|
-
stdout: stdout,
|
27
|
-
stderr: stderr
|
28
|
-
)
|
29
|
-
do_after(opts)
|
22
|
+
def execute(parameters = {})
|
23
|
+
do_before(parameters)
|
24
|
+
build_and_execute_command(parameters)
|
25
|
+
do_after(parameters)
|
30
26
|
rescue Open4::SpawnError
|
31
27
|
message = "Failed while running '#{command_name}'."
|
32
28
|
logger.error(message)
|
@@ -37,21 +33,66 @@ module RubyTerraform
|
|
37
33
|
|
38
34
|
attr_reader :binary, :logger, :stdin, :stdout, :stderr
|
39
35
|
|
36
|
+
def build_and_execute_command(parameters)
|
37
|
+
command = build_command(parameters)
|
38
|
+
logger.debug("Running '#{command}'.")
|
39
|
+
command.execute(
|
40
|
+
stdin: stdin,
|
41
|
+
stdout: stdout,
|
42
|
+
stderr: stderr
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
40
46
|
def command_name
|
41
47
|
self.class.to_s.split('::')[-1].downcase
|
42
48
|
end
|
43
49
|
|
44
|
-
def
|
50
|
+
def do_before(_parameters); end
|
51
|
+
|
52
|
+
def do_after(_parameters); end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def initialize_command; end
|
57
|
+
|
58
|
+
def build_command(parameters)
|
59
|
+
parameters = resolve_parameters(parameters)
|
60
|
+
|
45
61
|
Lino::CommandLineBuilder
|
46
|
-
.for_command(binary)
|
62
|
+
.for_command(@binary)
|
63
|
+
.with_options_after_subcommands
|
47
64
|
.with_option_separator('=')
|
65
|
+
.with_appliables(Options::Factory.from(options, parameters))
|
66
|
+
.with_subcommands(subcommands(parameters))
|
67
|
+
.with_arguments(arguments(parameters))
|
68
|
+
.build
|
69
|
+
end
|
70
|
+
|
71
|
+
def resolve_parameters(parameters)
|
72
|
+
parameter_defaults(parameters)
|
73
|
+
.merge(parameters)
|
74
|
+
.merge(parameter_overrides(parameters))
|
75
|
+
end
|
76
|
+
|
77
|
+
def parameter_defaults(_parameters)
|
78
|
+
{}
|
79
|
+
end
|
80
|
+
|
81
|
+
def parameter_overrides(_parameters)
|
82
|
+
{}
|
48
83
|
end
|
49
84
|
|
50
|
-
def
|
85
|
+
def subcommands(_values)
|
86
|
+
[]
|
87
|
+
end
|
51
88
|
|
52
|
-
def
|
89
|
+
def options
|
90
|
+
[]
|
91
|
+
end
|
53
92
|
|
54
|
-
def
|
93
|
+
def arguments(_values)
|
94
|
+
[]
|
95
|
+
end
|
55
96
|
end
|
56
97
|
end
|
57
98
|
end
|
@@ -1,47 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base'
|
2
4
|
|
3
5
|
module RubyTerraform
|
4
6
|
module Commands
|
5
7
|
class Destroy < Base
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-auto-approve
|
11
|
+
-backup
|
12
|
+
-force
|
13
|
+
-no-color
|
14
|
+
-state
|
15
|
+
-target
|
16
|
+
-var
|
17
|
+
-var-file
|
18
|
+
]
|
19
|
+
end
|
20
|
+
|
21
|
+
def subcommands(_parameters)
|
22
|
+
%w[destroy]
|
23
|
+
end
|
24
|
+
|
25
|
+
def arguments(parameters)
|
26
|
+
[parameters[:directory]]
|
27
|
+
end
|
28
|
+
|
29
|
+
def parameter_defaults(_parameters)
|
30
|
+
{ vars: {}, var_files: [], targets: [] }
|
31
|
+
end
|
19
32
|
|
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 |target_name|
|
34
|
-
sub = sub.with_option('-target', target_name)
|
35
|
-
end
|
36
|
-
sub = sub.with_option('-state', state) if state
|
37
|
-
sub = sub.with_option('-auto-approve', auto_approve) unless
|
38
|
-
auto_approve.nil?
|
39
|
-
sub = sub.with_option('-backup', backup) if backup
|
40
|
-
sub = sub.with_flag('-no-color') if no_color
|
41
|
-
sub = sub.with_flag('-force') if force
|
42
|
-
sub
|
43
|
-
end
|
44
|
-
.with_argument(directory)
|
33
|
+
def parameter_overrides(parameters)
|
34
|
+
{ backup: parameters[:no_backup] ? '-' : parameters[:backup] }
|
45
35
|
end
|
46
36
|
end
|
47
37
|
end
|
@@ -5,25 +5,23 @@ require_relative 'base'
|
|
5
5
|
module RubyTerraform
|
6
6
|
module Commands
|
7
7
|
class Format < Base
|
8
|
-
def
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
8
|
+
def options
|
9
|
+
%w[
|
10
|
+
-check
|
11
|
+
-diff
|
12
|
+
-list
|
13
|
+
-no-color
|
14
|
+
-recursive
|
15
|
+
-write
|
16
|
+
]
|
17
|
+
end
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
def subcommands(_parameters)
|
20
|
+
%w[fmt]
|
21
|
+
end
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
sub = sub.with_flag('-no-color') if no_color
|
24
|
-
sub = sub.with_flag('-recursive') if recursive
|
25
|
-
sub
|
26
|
-
end.with_argument(directory)
|
23
|
+
def arguments(parameters)
|
24
|
+
[parameters[:directory]]
|
27
25
|
end
|
28
26
|
end
|
29
27
|
end
|