ruby-terraform 0.65.0.pre.8 → 0.65.0.pre.13

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +11 -6
  4. data/Rakefile +7 -3
  5. data/bin/console +1 -0
  6. data/lib/ruby-terraform.rb +2 -0
  7. data/lib/ruby_terraform.rb +61 -4
  8. data/lib/ruby_terraform/commands.rb +31 -8
  9. data/lib/ruby_terraform/commands/apply.rb +19 -12
  10. data/lib/ruby_terraform/commands/base.rb +32 -39
  11. data/lib/ruby_terraform/commands/clean.rb +4 -2
  12. data/lib/ruby_terraform/commands/destroy.rb +24 -13
  13. data/lib/ruby_terraform/commands/force_unlock.rb +24 -0
  14. data/lib/ruby_terraform/commands/format.rb +16 -12
  15. data/lib/ruby_terraform/commands/get.rb +13 -8
  16. data/lib/ruby_terraform/commands/graph.rb +24 -0
  17. data/lib/ruby_terraform/commands/import.rb +22 -11
  18. data/lib/ruby_terraform/commands/init.rb +21 -9
  19. data/lib/ruby_terraform/commands/login.rb +20 -0
  20. data/lib/ruby_terraform/commands/logout.rb +20 -0
  21. data/lib/ruby_terraform/commands/output.rb +17 -15
  22. data/lib/ruby_terraform/commands/plan.rb +20 -9
  23. data/lib/ruby_terraform/commands/providers.rb +16 -0
  24. data/lib/ruby_terraform/commands/providers_lock.rb +28 -0
  25. data/lib/ruby_terraform/commands/providers_mirror.rb +24 -0
  26. data/lib/ruby_terraform/commands/providers_schema.rb +25 -0
  27. data/lib/ruby_terraform/commands/refresh.rb +23 -8
  28. data/lib/ruby_terraform/commands/remote_config.rb +8 -6
  29. data/lib/ruby_terraform/commands/show.rb +13 -9
  30. data/lib/ruby_terraform/commands/state_list.rb +20 -0
  31. data/lib/ruby_terraform/commands/state_move.rb +34 -0
  32. data/lib/ruby_terraform/commands/state_pull.rb +16 -0
  33. data/lib/ruby_terraform/commands/state_push.rb +24 -0
  34. data/lib/ruby_terraform/commands/state_remove.rb +32 -0
  35. data/lib/ruby_terraform/commands/state_replace_provider.rb +35 -0
  36. data/lib/ruby_terraform/commands/state_show.rb +24 -0
  37. data/lib/ruby_terraform/commands/taint.rb +36 -0
  38. data/lib/ruby_terraform/commands/untaint.rb +37 -0
  39. data/lib/ruby_terraform/commands/validate.rb +14 -13
  40. data/lib/ruby_terraform/commands/workspace_delete.rb +32 -0
  41. data/lib/ruby_terraform/commands/workspace_list.rb +24 -0
  42. data/lib/ruby_terraform/commands/workspace_new.rb +32 -0
  43. data/lib/ruby_terraform/commands/workspace_select.rb +24 -0
  44. data/lib/ruby_terraform/commands/workspace_show.rb +16 -0
  45. data/lib/ruby_terraform/errors.rb +2 -0
  46. data/lib/ruby_terraform/errors/execution_error.rb +2 -0
  47. data/lib/ruby_terraform/options.rb +28 -3
  48. data/lib/ruby_terraform/options/common.rb +11 -0
  49. data/lib/ruby_terraform/options/definition.rb +170 -0
  50. data/lib/ruby_terraform/options/definitions.rb +103 -0
  51. data/lib/ruby_terraform/options/factory.rb +12 -101
  52. data/lib/ruby_terraform/options/name.rb +13 -19
  53. data/lib/ruby_terraform/options/types.rb +27 -0
  54. data/lib/ruby_terraform/options/types/base.rb +8 -13
  55. data/lib/ruby_terraform/options/types/flag.rb +3 -3
  56. data/lib/ruby_terraform/options/types/standard.rb +3 -27
  57. data/lib/ruby_terraform/options/values.rb +38 -0
  58. data/lib/ruby_terraform/options/values/base.rb +15 -0
  59. data/lib/ruby_terraform/options/values/boolean.rb +15 -11
  60. data/lib/ruby_terraform/options/values/complex.rb +19 -0
  61. data/lib/ruby_terraform/options/values/key_value.rb +21 -0
  62. data/lib/ruby_terraform/options/values/string.rb +17 -0
  63. data/lib/ruby_terraform/output.rb +9 -7
  64. data/lib/ruby_terraform/version.rb +3 -1
  65. data/ruby_terraform.gemspec +59 -0
  66. metadata +64 -6
  67. data/lib/ruby_terraform/commands/workspace.rb +0 -24
  68. data/lib/ruby_terraform/options/types/boolean.rb +0 -16
@@ -1,21 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+
1
5
  module RubyTerraform
2
6
  module Options
3
7
  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)
8
+ class Boolean < Base
9
+ def resolve
10
+ return nil if @value.nil?
11
+ return @value if a_boolean?(@value)
12
+ return true if true_as_string?(@value)
15
13
 
16
14
  false
17
15
  end
18
16
 
17
+ def render
18
+ resolve.nil? ? nil : resolve.to_s
19
+ end
20
+
21
+ private
22
+
19
23
  def a_boolean?(value)
20
24
  value.is_a?(TrueClass) || value.is_a?(FalseClass)
21
25
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+
5
+ module RubyTerraform
6
+ module Options
7
+ module Values
8
+ class Complex < Base
9
+ def resolve
10
+ @value
11
+ end
12
+
13
+ def render
14
+ @value.is_a?(::String) ? @value : JSON.generate(value)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyTerraform
4
+ module Options
5
+ module Values
6
+ class KeyValue < ImmutableStruct.new(:key, :value)
7
+ def initialize(key, value)
8
+ super(key: key, value: value)
9
+ end
10
+
11
+ def resolve
12
+ { key => value.resolve }
13
+ end
14
+
15
+ def render
16
+ "'#{key}=#{value.render}'"
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+
5
+ module RubyTerraform
6
+ module Options
7
+ module Values
8
+ class String < Base
9
+ def resolve
10
+ @value.to_s
11
+ end
12
+
13
+ alias render resolve
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,18 +1,20 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RubyTerraform
2
4
  class Output
3
5
  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])
6
+ def for(parameters)
7
+ Dir.chdir(create_config_directory(parameters)) do
8
+ RubyTerraform.init(backend_config: parameters[:backend_config])
9
+ RubyTerraform.output(name: parameters[:name])
8
10
  end
9
11
  end
10
12
 
11
13
  private
12
14
 
13
- def create_config_directory(opts)
14
- source_directory = opts[:source_directory]
15
- work_directory = opts[:work_directory]
15
+ def create_config_directory(parameters)
16
+ source_directory = parameters[:source_directory]
17
+ work_directory = parameters[:work_directory]
16
18
 
17
19
  configuration_directory = File.join(work_directory, source_directory)
18
20
  FileUtils.mkdir_p File.dirname(configuration_directory)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RubyTerraform
2
- VERSION = '0.65.0.pre.8'.freeze
4
+ VERSION = '0.65.0.pre.13'
3
5
  end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'ruby_terraform/version'
6
+ require 'date'
7
+
8
+ files = %w[
9
+ bin
10
+ lib
11
+ CODE_OF_CONDUCT.md
12
+ ruby_terraform.gemspec
13
+ Gemfile
14
+ LICENSE.txt
15
+ Rakefile
16
+ README.md
17
+ ]
18
+
19
+ Gem::Specification.new do |spec|
20
+ spec.name = 'ruby-terraform'
21
+ spec.version = RubyTerraform::VERSION
22
+ spec.authors = ['Toby Clemson']
23
+ spec.email = ['tobyclemson@gmail.com']
24
+
25
+ spec.summary = 'A simple Ruby wrapper for invoking Terraform commands.'
26
+ spec.description =
27
+ 'Wraps the Terraform CLI so that Terraform can be invoked from a Ruby ' \
28
+ 'script or Rakefile.'
29
+ spec.homepage = 'https://github.com/infrablocks/ruby_terraform'
30
+ spec.license = 'MIT'
31
+
32
+ spec.files = `git ls-files -z`.split("\x0").select do |f|
33
+ f.match(/^(#{files.map { |g| Regexp.escape(g) }.join('|')})/)
34
+ end
35
+ spec.bindir = 'exe'
36
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
37
+ spec.require_paths = ['lib']
38
+
39
+ spec.required_ruby_version = '>= 2.6'
40
+
41
+ spec.add_dependency 'immutable-struct', '>= 2.4'
42
+ spec.add_dependency 'lino', '>= 2.5'
43
+
44
+ spec.add_development_dependency 'bundler', '~> 2.0'
45
+ spec.add_development_dependency 'faker', '~> 2.17'
46
+ spec.add_development_dependency 'gem-release', '~> 2.1'
47
+ spec.add_development_dependency 'guard', '~> 2.16'
48
+ spec.add_development_dependency 'guard-rspec', '~> 4.7'
49
+ spec.add_development_dependency 'rake', '~> 13.0'
50
+ spec.add_development_dependency 'rake_circle_ci', '~> 0.9'
51
+ spec.add_development_dependency 'rake_github', '~> 0.5'
52
+ spec.add_development_dependency 'rake_gpg', '~> 0.12'
53
+ spec.add_development_dependency 'rake_ssh', '~> 0.4'
54
+ spec.add_development_dependency 'rspec', '~> 3.9'
55
+ spec.add_development_dependency 'rubocop', '~> 1.12'
56
+ spec.add_development_dependency 'rubocop-rake', '~> 0.5'
57
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
58
+ spec.add_development_dependency 'simplecov', '~> 0.21'
59
+ end
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.65.0.pre.8
4
+ version: 0.65.0.pre.13
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-04-05 00:00:00.000000000 Z
11
+ date: 2021-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: immutable-struct
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '2.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '2.4'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: lino
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - ">="
18
32
  - !ruby/object:Gem::Version
19
- version: '2.3'
33
+ version: '2.5'
20
34
  type: :runtime
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: '2.3'
40
+ version: '2.5'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +206,20 @@ dependencies:
192
206
  - - "~>"
193
207
  - !ruby/object:Gem::Version
194
208
  version: '1.12'
209
+ - !ruby/object:Gem::Dependency
210
+ name: rubocop-rake
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.5'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.5'
195
223
  - !ruby/object:Gem::Dependency
196
224
  name: rubocop-rspec
197
225
  requirement: !ruby/object:Gem::Requirement
@@ -243,29 +271,59 @@ files:
243
271
  - lib/ruby_terraform/commands/base.rb
244
272
  - lib/ruby_terraform/commands/clean.rb
245
273
  - lib/ruby_terraform/commands/destroy.rb
274
+ - lib/ruby_terraform/commands/force_unlock.rb
246
275
  - lib/ruby_terraform/commands/format.rb
247
276
  - lib/ruby_terraform/commands/get.rb
277
+ - lib/ruby_terraform/commands/graph.rb
248
278
  - lib/ruby_terraform/commands/import.rb
249
279
  - lib/ruby_terraform/commands/init.rb
280
+ - lib/ruby_terraform/commands/login.rb
281
+ - lib/ruby_terraform/commands/logout.rb
250
282
  - lib/ruby_terraform/commands/output.rb
251
283
  - lib/ruby_terraform/commands/plan.rb
284
+ - lib/ruby_terraform/commands/providers.rb
285
+ - lib/ruby_terraform/commands/providers_lock.rb
286
+ - lib/ruby_terraform/commands/providers_mirror.rb
287
+ - lib/ruby_terraform/commands/providers_schema.rb
252
288
  - lib/ruby_terraform/commands/refresh.rb
253
289
  - lib/ruby_terraform/commands/remote_config.rb
254
290
  - lib/ruby_terraform/commands/show.rb
291
+ - lib/ruby_terraform/commands/state_list.rb
292
+ - lib/ruby_terraform/commands/state_move.rb
293
+ - lib/ruby_terraform/commands/state_pull.rb
294
+ - lib/ruby_terraform/commands/state_push.rb
295
+ - lib/ruby_terraform/commands/state_remove.rb
296
+ - lib/ruby_terraform/commands/state_replace_provider.rb
297
+ - lib/ruby_terraform/commands/state_show.rb
298
+ - lib/ruby_terraform/commands/taint.rb
299
+ - lib/ruby_terraform/commands/untaint.rb
255
300
  - lib/ruby_terraform/commands/validate.rb
256
- - lib/ruby_terraform/commands/workspace.rb
301
+ - lib/ruby_terraform/commands/workspace_delete.rb
302
+ - lib/ruby_terraform/commands/workspace_list.rb
303
+ - lib/ruby_terraform/commands/workspace_new.rb
304
+ - lib/ruby_terraform/commands/workspace_select.rb
305
+ - lib/ruby_terraform/commands/workspace_show.rb
257
306
  - lib/ruby_terraform/errors.rb
258
307
  - lib/ruby_terraform/errors/execution_error.rb
259
308
  - lib/ruby_terraform/options.rb
309
+ - lib/ruby_terraform/options/common.rb
310
+ - lib/ruby_terraform/options/definition.rb
311
+ - lib/ruby_terraform/options/definitions.rb
260
312
  - lib/ruby_terraform/options/factory.rb
261
313
  - lib/ruby_terraform/options/name.rb
314
+ - lib/ruby_terraform/options/types.rb
262
315
  - lib/ruby_terraform/options/types/base.rb
263
- - lib/ruby_terraform/options/types/boolean.rb
264
316
  - lib/ruby_terraform/options/types/flag.rb
265
317
  - lib/ruby_terraform/options/types/standard.rb
318
+ - lib/ruby_terraform/options/values.rb
319
+ - lib/ruby_terraform/options/values/base.rb
266
320
  - lib/ruby_terraform/options/values/boolean.rb
321
+ - lib/ruby_terraform/options/values/complex.rb
322
+ - lib/ruby_terraform/options/values/key_value.rb
323
+ - lib/ruby_terraform/options/values/string.rb
267
324
  - lib/ruby_terraform/output.rb
268
325
  - lib/ruby_terraform/version.rb
326
+ - ruby_terraform.gemspec
269
327
  homepage: https://github.com/infrablocks/ruby_terraform
270
328
  licenses:
271
329
  - MIT
@@ -1,24 +0,0 @@
1
- require_relative 'base'
2
-
3
- module RubyTerraform
4
- module Commands
5
- class Workspace < Base
6
- def subcommands(values)
7
- commands = ['workspace', values[:operation]]
8
- if values[:workspace] && values[:operation] != 'list'
9
- commands << values[:workspace]
10
- else
11
- commands
12
- end
13
- end
14
-
15
- def arguments(values)
16
- [values[:directory]]
17
- end
18
-
19
- def option_default_values(_opts)
20
- { directory: nil, operation: 'list', workspace: nil }
21
- end
22
- end
23
- end
24
- end
@@ -1,16 +0,0 @@
1
- require_relative 'base'
2
- require_relative '../values/boolean'
3
-
4
- module RubyTerraform
5
- module Options
6
- module Types
7
- class Boolean < Base
8
- include Values::Boolean
9
-
10
- def apply(builder)
11
- builder.with_option(name, value)
12
- end
13
- end
14
- end
15
- end
16
- end