ruby-terraform 0.65.0.pre.7 → 0.65.0.pre.12

Sign up to get free protection for your applications and to get access to all the features.
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.7'.freeze
4
+ VERSION = '0.65.0.pre.12'
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.7
4
+ version: 0.65.0.pre.12
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