ruby-terraform 0.65.0.pre.5 → 0.65.0.pre.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +8 -5
  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 +50 -3
  8. data/lib/ruby_terraform/commands.rb +31 -8
  9. data/lib/ruby_terraform/commands/apply.rb +29 -10
  10. data/lib/ruby_terraform/commands/base.rb +33 -30
  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 +28 -8
  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 +35 -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 +119 -0
  50. data/lib/ruby_terraform/options/name.rb +45 -0
  51. data/lib/ruby_terraform/{command_line/option → options/types}/base.rb +8 -6
  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/{command_line/option → options/types}/standard.rb +14 -11
  55. data/lib/ruby_terraform/{command_line/option/boolean_value.rb → options/values/boolean.rb} +7 -5
  56. data/lib/ruby_terraform/output.rb +10 -7
  57. data/lib/ruby_terraform/version.rb +3 -1
  58. data/ruby_terraform.gemspec +58 -0
  59. metadata +50 -13
  60. data/lib/ruby_terraform/command_line/builder.rb +0 -55
  61. data/lib/ruby_terraform/command_line/option/boolean.rb +0 -16
  62. data/lib/ruby_terraform/command_line/option/flag.rb +0 -16
  63. data/lib/ruby_terraform/command_line/option/switch.rb +0 -43
  64. data/lib/ruby_terraform/command_line/options_factory.rb +0 -79
  65. data/lib/ruby_terraform/commands/workspace.rb +0 -24
@@ -1,14 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RubyTerraform
2
- module CommandLine
3
- module Option
4
- module BooleanValue
4
+ module Options
5
+ module Values
6
+ module Boolean
5
7
  def coerce_value(value)
6
- @value = boolean_val(value)
8
+ @value = to_boolean(value)
7
9
  end
8
10
 
9
11
  private
10
12
 
11
- def boolean_val(value)
13
+ def to_boolean(value)
12
14
  return nil if value.nil?
13
15
  return value if a_boolean?(value)
14
16
  return true if true_as_string?(value)
@@ -1,22 +1,25 @@
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)
19
21
  FileUtils.cp_r source_directory, configuration_directory
22
+
20
23
  configuration_directory
21
24
  end
22
25
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RubyTerraform
2
- VERSION = '0.65.0.pre.5'.freeze
4
+ VERSION = '0.65.0.pre.10'
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.5
4
+ version: 0.65.0.pre.10
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-04 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
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
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: '1.5'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -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
@@ -238,34 +252,57 @@ files:
238
252
  - bin/setup
239
253
  - lib/ruby-terraform.rb
240
254
  - lib/ruby_terraform.rb
241
- - lib/ruby_terraform/command_line/builder.rb
242
- - lib/ruby_terraform/command_line/option/base.rb
243
- - lib/ruby_terraform/command_line/option/boolean.rb
244
- - lib/ruby_terraform/command_line/option/boolean_value.rb
245
- - lib/ruby_terraform/command_line/option/flag.rb
246
- - lib/ruby_terraform/command_line/option/standard.rb
247
- - lib/ruby_terraform/command_line/option/switch.rb
248
- - lib/ruby_terraform/command_line/options_factory.rb
249
255
  - lib/ruby_terraform/commands.rb
250
256
  - lib/ruby_terraform/commands/apply.rb
251
257
  - lib/ruby_terraform/commands/base.rb
252
258
  - lib/ruby_terraform/commands/clean.rb
253
259
  - lib/ruby_terraform/commands/destroy.rb
260
+ - lib/ruby_terraform/commands/force_unlock.rb
254
261
  - lib/ruby_terraform/commands/format.rb
255
262
  - lib/ruby_terraform/commands/get.rb
263
+ - lib/ruby_terraform/commands/graph.rb
256
264
  - lib/ruby_terraform/commands/import.rb
257
265
  - lib/ruby_terraform/commands/init.rb
266
+ - lib/ruby_terraform/commands/login.rb
267
+ - lib/ruby_terraform/commands/logout.rb
258
268
  - lib/ruby_terraform/commands/output.rb
259
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
260
274
  - lib/ruby_terraform/commands/refresh.rb
261
275
  - lib/ruby_terraform/commands/remote_config.rb
262
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
263
286
  - lib/ruby_terraform/commands/validate.rb
264
- - 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
265
292
  - lib/ruby_terraform/errors.rb
266
293
  - lib/ruby_terraform/errors/execution_error.rb
294
+ - lib/ruby_terraform/options.rb
295
+ - lib/ruby_terraform/options/common.rb
296
+ - lib/ruby_terraform/options/factory.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
302
+ - lib/ruby_terraform/options/values/boolean.rb
267
303
  - lib/ruby_terraform/output.rb
268
304
  - lib/ruby_terraform/version.rb
305
+ - ruby_terraform.gemspec
269
306
  homepage: https://github.com/infrablocks/ruby_terraform
270
307
  licenses:
271
308
  - MIT
@@ -1,55 +0,0 @@
1
- require 'lino'
2
-
3
- module RubyTerraform
4
- module CommandLine
5
- class Builder
6
- def initialize(binary:, sub_commands:, options:, arguments:)
7
- @builder = instantiate_builder(binary)
8
- @sub_commands = array_of(sub_commands)
9
- @options = array_of(options)
10
- @arguments = array_of(arguments)
11
- end
12
-
13
- def build
14
- configure_builder
15
- builder.build
16
- end
17
-
18
- private
19
-
20
- attr_reader :builder, :sub_commands, :options, :arguments
21
-
22
- def configure_builder
23
- add_subcommands_and_options
24
- add_arguments
25
- end
26
-
27
- def add_subcommands_and_options
28
- sub_commands[0...-1].each do |command|
29
- @builder = builder.with_subcommand(command)
30
- end
31
- @builder = builder.with_subcommand(sub_commands.last) do |sub|
32
- options.inject(sub) do |sub_command, option|
33
- option.add_to_subcommand(sub_command)
34
- end
35
- end
36
- end
37
-
38
- def add_arguments
39
- @builder = builder.with_arguments(arguments)
40
- end
41
-
42
- def instantiate_builder(binary)
43
- Lino::CommandLineBuilder
44
- .for_command(binary)
45
- .with_option_separator('=')
46
- end
47
-
48
- def array_of(value)
49
- return value if value.respond_to?(:each)
50
-
51
- value.nil? ? [] : [value]
52
- end
53
- end
54
- end
55
- end
@@ -1,16 +0,0 @@
1
- require_relative 'boolean_value'
2
- require_relative 'base'
3
-
4
- module RubyTerraform
5
- module CommandLine
6
- module Option
7
- class Boolean < Base
8
- include BooleanValue
9
-
10
- def add_to_subcommand(sub)
11
- sub.with_option(switch, value)
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,16 +0,0 @@
1
- require_relative 'boolean_value'
2
- require_relative 'base'
3
-
4
- module RubyTerraform
5
- module CommandLine
6
- module Option
7
- class Flag < Base
8
- include BooleanValue
9
-
10
- def add_to_subcommand(sub)
11
- value ? sub.with_flag(switch) : sub
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,43 +0,0 @@
1
- module RubyTerraform
2
- module CommandLine
3
- module Option
4
- class Switch
5
- def initialize(switch)
6
- @switch_without_prefix = switch[0] == '-' ? switch[1..] : switch
7
- end
8
-
9
- def to_s
10
- "-#{switch_without_prefix}"
11
- end
12
-
13
- def as_key
14
- snake_case.to_sym
15
- end
16
-
17
- def as_plural_key
18
- "#{snake_case}s".to_sym
19
- end
20
-
21
- def ==(other)
22
- to_s == other
23
- end
24
-
25
- def eql?(other)
26
- to_s == other
27
- end
28
-
29
- def hash
30
- to_s.hash
31
- end
32
-
33
- private
34
-
35
- attr_reader :switch_without_prefix
36
-
37
- def snake_case
38
- switch_without_prefix.gsub('-', '_')
39
- end
40
- end
41
- end
42
- end
43
- end
@@ -1,79 +0,0 @@
1
- require_relative 'option/standard'
2
- require_relative 'option/flag'
3
- require_relative 'option/boolean'
4
- require_relative 'option/switch'
5
-
6
- module RubyTerraform
7
- module CommandLine
8
- class OptionsFactory
9
- PLURAL_SWITCHES = Set.new(
10
- %w[-var -target -var-file]
11
- ).freeze
12
- BOOLEAN_SWITCHES = Set.new(
13
- %w[-auto-approve -backend -get -get-plugins -input -list -lock
14
- -refresh -upgrade -verify-plugins -write]
15
- ).freeze
16
- FLAG_SWITCHES = Set.new(
17
- %w[-allow-missing -allow-missing-config -check -compact-warnings
18
- -destroy -detailed-exitcode -diff -draw-cycles -force -force-copy
19
- -ignore-remote-version -json -no-color -raw -reconfigure -recursive
20
- -update]
21
- ).freeze
22
- OVERRIDE_SWITCHES = {
23
- config: :directory,
24
- out: :plan
25
- }.freeze
26
-
27
- def self.from(values, switches)
28
- new(values, switches).from
29
- end
30
-
31
- private_class_method :new
32
-
33
- def initialize(values, switches)
34
- @switches = switches.map { |switch| Option::Switch.new(switch) }
35
- @values = values
36
- end
37
-
38
- def from
39
- switches.each_with_object([]) do |switch, options|
40
- options.append(*options_from_switch(switch))
41
- end
42
- end
43
-
44
- private
45
-
46
- attr_reader :switches, :values
47
-
48
- def options_from_switch(switch)
49
- return plural_options(switch) if PLURAL_SWITCHES.include?(switch)
50
- return boolean_option(switch) if BOOLEAN_SWITCHES.include?(switch)
51
- return flag_option(switch) if FLAG_SWITCHES.include?(switch)
52
- return override_option(switch) if OVERRIDE_SWITCHES.key?(switch.as_key)
53
-
54
- standard_option(switch, switch.as_key)
55
- end
56
-
57
- def boolean_option(switch)
58
- [Option::Boolean.new(switch.to_s, values[switch.as_key])]
59
- end
60
-
61
- def flag_option(switch)
62
- [Option::Flag.new(switch.to_s, values[switch.as_key])]
63
- end
64
-
65
- def standard_option(switch, hash_key)
66
- [Option::Standard.new(switch.to_s, values[hash_key])]
67
- end
68
-
69
- def override_option(switch)
70
- standard_option(switch, OVERRIDE_SWITCHES[switch.as_key])
71
- end
72
-
73
- def plural_options(switch)
74
- standard_option(switch.to_s, switch.as_key) +
75
- standard_option(switch.to_s, switch.as_plural_key)
76
- end
77
- end
78
- end
79
- end