ruby-terraform 0.65.0.pre.1 → 0.65.0.pre.6
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.lock +67 -33
- data/README.md +29 -9
- data/Rakefile +60 -42
- data/bin/console +3 -3
- data/lib/ruby-terraform.rb +1 -1
- data/lib/ruby_terraform.rb +20 -55
- data/lib/ruby_terraform/commands/apply.rb +18 -39
- data/lib/ruby_terraform/commands/base.rb +59 -18
- data/lib/ruby_terraform/commands/clean.rb +2 -2
- data/lib/ruby_terraform/commands/destroy.rb +17 -37
- data/lib/ruby_terraform/commands/format.rb +8 -19
- data/lib/ruby_terraform/commands/get.rb +11 -9
- data/lib/ruby_terraform/commands/import.rb +17 -36
- data/lib/ruby_terraform/commands/init.rb +12 -27
- data/lib/ruby_terraform/commands/output.rb +13 -20
- data/lib/ruby_terraform/commands/plan.rb +13 -36
- data/lib/ruby_terraform/commands/refresh.rb +13 -32
- data/lib/ruby_terraform/commands/remote_config.rb +9 -16
- data/lib/ruby_terraform/commands/show.rb +9 -15
- data/lib/ruby_terraform/commands/validate.rb +13 -29
- data/lib/ruby_terraform/commands/workspace.rb +14 -13
- data/lib/ruby_terraform/errors/execution_error.rb +1 -1
- data/lib/ruby_terraform/options/base.rb +22 -0
- data/lib/ruby_terraform/options/boolean.rb +14 -0
- data/lib/ruby_terraform/options/factory.rb +116 -0
- data/lib/ruby_terraform/options/flag.rb +14 -0
- data/lib/ruby_terraform/options/standard.rb +39 -0
- data/lib/ruby_terraform/options/switch.rb +41 -0
- data/lib/ruby_terraform/options/values/boolean.rb +29 -0
- data/lib/ruby_terraform/output.rb +15 -11
- data/lib/ruby_terraform/version.rb +1 -1
- metadata +63 -14
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
require_relative 'base'
|
4
|
+
|
5
|
+
module RubyTerraform
|
6
|
+
module Options
|
7
|
+
class Standard < Base
|
8
|
+
def apply(builder)
|
9
|
+
if value.respond_to?(:keys)
|
10
|
+
apply_hash(builder)
|
11
|
+
elsif value.respond_to?(:each)
|
12
|
+
apply_array(builder)
|
13
|
+
else
|
14
|
+
builder.with_option(switch, value)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def apply_hash(builder)
|
21
|
+
builder.with_repeated_option(
|
22
|
+
switch,
|
23
|
+
value.map do |hash_key, hash_value|
|
24
|
+
"'#{hash_key}=#{as_string(hash_value)}'"
|
25
|
+
end,
|
26
|
+
separator: ' '
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
def apply_array(builder)
|
31
|
+
builder.with_repeated_option(switch, value)
|
32
|
+
end
|
33
|
+
|
34
|
+
def as_string(value)
|
35
|
+
value.is_a?(String) ? value : JSON.generate(value)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module RubyTerraform
|
2
|
+
module Options
|
3
|
+
class Switch
|
4
|
+
def initialize(switch)
|
5
|
+
@switch_without_prefix = switch[0] == '-' ? switch[1..] : switch
|
6
|
+
end
|
7
|
+
|
8
|
+
def to_s
|
9
|
+
"-#{switch_without_prefix}"
|
10
|
+
end
|
11
|
+
|
12
|
+
def as_key
|
13
|
+
snake_case.to_sym
|
14
|
+
end
|
15
|
+
|
16
|
+
def as_plural_key
|
17
|
+
"#{snake_case}s".to_sym
|
18
|
+
end
|
19
|
+
|
20
|
+
def ==(other)
|
21
|
+
to_s == other
|
22
|
+
end
|
23
|
+
|
24
|
+
def eql?(other)
|
25
|
+
to_s == other
|
26
|
+
end
|
27
|
+
|
28
|
+
def hash
|
29
|
+
to_s.hash
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
attr_reader :switch_without_prefix
|
35
|
+
|
36
|
+
def snake_case
|
37
|
+
switch_without_prefix.gsub('-', '_')
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module RubyTerraform
|
2
|
+
module Options
|
3
|
+
module Values
|
4
|
+
module Boolean
|
5
|
+
def coerce_value(value)
|
6
|
+
@value = to_boolean(value)
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def to_boolean(value)
|
12
|
+
return nil if value.nil?
|
13
|
+
return value if a_boolean?(value)
|
14
|
+
return true if true_as_string?(value)
|
15
|
+
|
16
|
+
false
|
17
|
+
end
|
18
|
+
|
19
|
+
def a_boolean?(value)
|
20
|
+
value.is_a?(TrueClass) || value.is_a?(FalseClass)
|
21
|
+
end
|
22
|
+
|
23
|
+
def true_as_string?(value)
|
24
|
+
value.respond_to?(:downcase) && value.downcase == 'true'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -1,20 +1,24 @@
|
|
1
1
|
module RubyTerraform
|
2
2
|
class Output
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
class << self
|
4
|
+
def for(opts)
|
5
|
+
Dir.chdir(create_config_directory(opts)) do
|
6
|
+
RubyTerraform.init(backend_config: opts[:backend_config])
|
7
|
+
RubyTerraform.output(name: opts[:name])
|
8
|
+
end
|
9
|
+
end
|
6
10
|
|
7
|
-
|
8
|
-
work_directory = opts[:work_directory]
|
11
|
+
private
|
9
12
|
|
10
|
-
|
13
|
+
def create_config_directory(opts)
|
14
|
+
source_directory = opts[:source_directory]
|
15
|
+
work_directory = opts[:work_directory]
|
11
16
|
|
12
|
-
|
13
|
-
|
17
|
+
configuration_directory = File.join(work_directory, source_directory)
|
18
|
+
FileUtils.mkdir_p File.dirname(configuration_directory)
|
19
|
+
FileUtils.cp_r source_directory, configuration_directory
|
14
20
|
|
15
|
-
|
16
|
-
RubyTerraform.init(backend_config: backend_config)
|
17
|
-
RubyTerraform.output(name: name)
|
21
|
+
configuration_directory
|
18
22
|
end
|
19
23
|
end
|
20
24
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-terraform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.65.0.pre.
|
4
|
+
version: 0.65.0.pre.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toby Clemson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lino
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,34 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '2.1'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.16'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.16'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: guard-rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '4.7'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '4.7'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: rake
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,33 +179,47 @@ dependencies:
|
|
151
179
|
- !ruby/object:Gem::Version
|
152
180
|
version: '3.9'
|
153
181
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
182
|
+
name: rubocop
|
155
183
|
requirement: !ruby/object:Gem::Requirement
|
156
184
|
requirements:
|
157
|
-
- - "
|
185
|
+
- - "~>"
|
158
186
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
187
|
+
version: '1.12'
|
160
188
|
type: :development
|
161
189
|
prerelease: false
|
162
190
|
version_requirements: !ruby/object:Gem::Requirement
|
163
191
|
requirements:
|
164
|
-
- - "
|
192
|
+
- - "~>"
|
165
193
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
194
|
+
version: '1.12'
|
167
195
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
196
|
+
name: rubocop-rspec
|
169
197
|
requirement: !ruby/object:Gem::Requirement
|
170
198
|
requirements:
|
171
|
-
- - "
|
199
|
+
- - "~>"
|
172
200
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
201
|
+
version: '2.2'
|
174
202
|
type: :development
|
175
203
|
prerelease: false
|
176
204
|
version_requirements: !ruby/object:Gem::Requirement
|
177
205
|
requirements:
|
178
|
-
- - "
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '2.2'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: simplecov
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0.21'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
179
221
|
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
222
|
+
version: '0.21'
|
181
223
|
description: Wraps the Terraform CLI so that Terraform can be invoked from a Ruby
|
182
224
|
script or Rakefile.
|
183
225
|
email:
|
@@ -214,6 +256,13 @@ files:
|
|
214
256
|
- lib/ruby_terraform/commands/workspace.rb
|
215
257
|
- lib/ruby_terraform/errors.rb
|
216
258
|
- lib/ruby_terraform/errors/execution_error.rb
|
259
|
+
- lib/ruby_terraform/options/base.rb
|
260
|
+
- lib/ruby_terraform/options/boolean.rb
|
261
|
+
- lib/ruby_terraform/options/factory.rb
|
262
|
+
- lib/ruby_terraform/options/flag.rb
|
263
|
+
- lib/ruby_terraform/options/standard.rb
|
264
|
+
- lib/ruby_terraform/options/switch.rb
|
265
|
+
- lib/ruby_terraform/options/values/boolean.rb
|
217
266
|
- lib/ruby_terraform/output.rb
|
218
267
|
- lib/ruby_terraform/version.rb
|
219
268
|
homepage: https://github.com/infrablocks/ruby_terraform
|