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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +4 -1
  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 +56 -3
  8. data/lib/ruby_terraform/commands.rb +31 -8
  9. data/lib/ruby_terraform/commands/apply.rb +28 -9
  10. data/lib/ruby_terraform/commands/base.rb +24 -26
  11. data/lib/ruby_terraform/commands/clean.rb +4 -2
  12. data/lib/ruby_terraform/commands/destroy.rb +29 -9
  13. data/lib/ruby_terraform/commands/force_unlock.rb +24 -0
  14. data/lib/ruby_terraform/commands/format.rb +17 -6
  15. data/lib/ruby_terraform/commands/get.rb +14 -6
  16. data/lib/ruby_terraform/commands/graph.rb +24 -0
  17. data/lib/ruby_terraform/commands/import.rb +28 -9
  18. data/lib/ruby_terraform/commands/init.rb +27 -8
  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 +18 -8
  22. data/lib/ruby_terraform/commands/plan.rb +27 -7
  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 +29 -7
  28. data/lib/ruby_terraform/commands/remote_config.rb +11 -5
  29. data/lib/ruby_terraform/commands/show.rb +14 -6
  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 +15 -7
  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 +8 -0
  48. data/lib/ruby_terraform/options/common.rb +11 -0
  49. data/lib/ruby_terraform/options/factory.rb +70 -67
  50. data/lib/ruby_terraform/options/{switch.rb → name.rb} +11 -7
  51. data/lib/ruby_terraform/options/types/base.rb +26 -0
  52. data/lib/ruby_terraform/options/types/boolean.rb +18 -0
  53. data/lib/ruby_terraform/options/types/flag.rb +18 -0
  54. data/lib/ruby_terraform/options/types/standard.rb +43 -0
  55. data/lib/ruby_terraform/options/values/boolean.rb +2 -0
  56. data/lib/ruby_terraform/output.rb +9 -7
  57. data/lib/ruby_terraform/version.rb +3 -1
  58. data/ruby_terraform.gemspec +58 -0
  59. metadata +46 -8
  60. data/lib/ruby_terraform/commands/workspace.rb +0 -24
  61. data/lib/ruby_terraform/options/base.rb +0 -22
  62. data/lib/ruby_terraform/options/boolean.rb +0 -14
  63. data/lib/ruby_terraform/options/flag.rb +0 -14
  64. data/lib/ruby_terraform/options/standard.rb +0 -39
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RubyTerraform
2
4
  module Options
3
5
  module Values
@@ -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.6'.freeze
4
+ VERSION = '0.65.0.pre.11'
3
5
  end
@@ -0,0 +1,58 @@
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 'lino', '>= 2.3'
42
+
43
+ spec.add_development_dependency 'bundler', '~> 2.0'
44
+ spec.add_development_dependency 'faker', '~> 2.17'
45
+ spec.add_development_dependency 'gem-release', '~> 2.1'
46
+ spec.add_development_dependency 'guard', '~> 2.16'
47
+ spec.add_development_dependency 'guard-rspec', '~> 4.7'
48
+ spec.add_development_dependency 'rake', '~> 13.0'
49
+ spec.add_development_dependency 'rake_circle_ci', '~> 0.9'
50
+ spec.add_development_dependency 'rake_github', '~> 0.5'
51
+ spec.add_development_dependency 'rake_gpg', '~> 0.12'
52
+ spec.add_development_dependency 'rake_ssh', '~> 0.4'
53
+ spec.add_development_dependency 'rspec', '~> 3.9'
54
+ spec.add_development_dependency 'rubocop', '~> 1.12'
55
+ spec.add_development_dependency 'rubocop-rake', '~> 0.5'
56
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
57
+ spec.add_development_dependency 'simplecov', '~> 0.21'
58
+ 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.6
4
+ version: 0.65.0.pre.11
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-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lino
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
194
  version: '1.12'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rubocop-rake
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '0.5'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '0.5'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: rubocop-rspec
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -243,28 +257,52 @@ files:
243
257
  - lib/ruby_terraform/commands/base.rb
244
258
  - lib/ruby_terraform/commands/clean.rb
245
259
  - lib/ruby_terraform/commands/destroy.rb
260
+ - lib/ruby_terraform/commands/force_unlock.rb
246
261
  - lib/ruby_terraform/commands/format.rb
247
262
  - lib/ruby_terraform/commands/get.rb
263
+ - lib/ruby_terraform/commands/graph.rb
248
264
  - lib/ruby_terraform/commands/import.rb
249
265
  - lib/ruby_terraform/commands/init.rb
266
+ - lib/ruby_terraform/commands/login.rb
267
+ - lib/ruby_terraform/commands/logout.rb
250
268
  - lib/ruby_terraform/commands/output.rb
251
269
  - lib/ruby_terraform/commands/plan.rb
270
+ - lib/ruby_terraform/commands/providers.rb
271
+ - lib/ruby_terraform/commands/providers_lock.rb
272
+ - lib/ruby_terraform/commands/providers_mirror.rb
273
+ - lib/ruby_terraform/commands/providers_schema.rb
252
274
  - lib/ruby_terraform/commands/refresh.rb
253
275
  - lib/ruby_terraform/commands/remote_config.rb
254
276
  - lib/ruby_terraform/commands/show.rb
277
+ - lib/ruby_terraform/commands/state_list.rb
278
+ - lib/ruby_terraform/commands/state_move.rb
279
+ - lib/ruby_terraform/commands/state_pull.rb
280
+ - lib/ruby_terraform/commands/state_push.rb
281
+ - lib/ruby_terraform/commands/state_remove.rb
282
+ - lib/ruby_terraform/commands/state_replace_provider.rb
283
+ - lib/ruby_terraform/commands/state_show.rb
284
+ - lib/ruby_terraform/commands/taint.rb
285
+ - lib/ruby_terraform/commands/untaint.rb
255
286
  - lib/ruby_terraform/commands/validate.rb
256
- - lib/ruby_terraform/commands/workspace.rb
287
+ - lib/ruby_terraform/commands/workspace_delete.rb
288
+ - lib/ruby_terraform/commands/workspace_list.rb
289
+ - lib/ruby_terraform/commands/workspace_new.rb
290
+ - lib/ruby_terraform/commands/workspace_select.rb
291
+ - lib/ruby_terraform/commands/workspace_show.rb
257
292
  - lib/ruby_terraform/errors.rb
258
293
  - lib/ruby_terraform/errors/execution_error.rb
259
- - lib/ruby_terraform/options/base.rb
260
- - lib/ruby_terraform/options/boolean.rb
294
+ - lib/ruby_terraform/options.rb
295
+ - lib/ruby_terraform/options/common.rb
261
296
  - 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
297
+ - lib/ruby_terraform/options/name.rb
298
+ - lib/ruby_terraform/options/types/base.rb
299
+ - lib/ruby_terraform/options/types/boolean.rb
300
+ - lib/ruby_terraform/options/types/flag.rb
301
+ - lib/ruby_terraform/options/types/standard.rb
265
302
  - lib/ruby_terraform/options/values/boolean.rb
266
303
  - lib/ruby_terraform/output.rb
267
304
  - lib/ruby_terraform/version.rb
305
+ - ruby_terraform.gemspec
268
306
  homepage: https://github.com/infrablocks/ruby_terraform
269
307
  licenses:
270
308
  - MIT
@@ -1,24 +0,0 @@
1
- require_relative 'base'
2
-
3
- module RubyTerraform
4
- module Commands
5
- class Workspace < Base
6
- def sub_commands(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,22 +0,0 @@
1
- module RubyTerraform
2
- module Options
3
- class Base
4
- def initialize(switch, value)
5
- @switch = switch
6
- coerce_value(value)
7
- end
8
-
9
- def apply(_builder)
10
- raise 'not implemented'
11
- end
12
-
13
- private
14
-
15
- attr_reader :switch, :value
16
-
17
- def coerce_value(value)
18
- @value = value
19
- end
20
- end
21
- end
22
- end
@@ -1,14 +0,0 @@
1
- require_relative 'base'
2
- require_relative 'values/boolean'
3
-
4
- module RubyTerraform
5
- module Options
6
- class Boolean < Base
7
- include Values::Boolean
8
-
9
- def apply(builder)
10
- builder.with_option(switch, value)
11
- end
12
- end
13
- end
14
- end
@@ -1,14 +0,0 @@
1
- require_relative 'base'
2
- require_relative 'values/boolean'
3
-
4
- module RubyTerraform
5
- module Options
6
- class Flag < Base
7
- include Values::Boolean
8
-
9
- def apply(builder)
10
- value ? builder.with_flag(switch) : builder
11
- end
12
- end
13
- end
14
- end
@@ -1,39 +0,0 @@
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