ruby-terraform 0.65.0.pre.6 → 0.65.0.pre.11

Sign up to get free protection for your applications and to get access to all the features.
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