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
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class ForceUnlock < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[force-unlock]
13
+ end
14
+
15
+ def options
16
+ %w[-force] + super
17
+ end
18
+
19
+ def arguments(parameters)
20
+ [parameters[:lock_id]]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,18 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
4
+ require_relative '../options/common'
2
5
 
3
6
  module RubyTerraform
4
7
  module Commands
5
8
  class Format < Base
6
- def switches
7
- %w[-list -write -diff -check -recursive -no-color]
8
- end
9
+ include RubyTerraform::Options::Common
9
10
 
10
- def sub_commands(_values)
11
+ def subcommands
11
12
  %w[fmt]
12
13
  end
13
14
 
14
- def arguments(values)
15
- [values[:directory]]
15
+ def options
16
+ %w[
17
+ -list
18
+ -write
19
+ -diff
20
+ -check
21
+ -recursive
22
+ ] + super
23
+ end
24
+
25
+ def arguments(parameters)
26
+ [parameters[:directory]]
16
27
  end
17
28
  end
18
29
  end
@@ -1,18 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
4
+ require_relative '../options/common'
2
5
 
3
6
  module RubyTerraform
4
7
  module Commands
5
8
  class Get < Base
6
- def switches
7
- %w[-update -no-color]
8
- end
9
+ include RubyTerraform::Options::Common
9
10
 
10
- def sub_commands(_values)
11
+ def subcommands
11
12
  %w[get]
12
13
  end
13
14
 
14
- def arguments(values)
15
- [values[:directory]]
15
+ def options
16
+ %w[
17
+ -no-color
18
+ -update
19
+ ] + super
20
+ end
21
+
22
+ def arguments(parameters)
23
+ [parameters[:directory]]
16
24
  end
17
25
  end
18
26
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class Graph < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[graph]
13
+ end
14
+
15
+ def options
16
+ %w[
17
+ -draw-cycles
18
+ -type
19
+ -module-depth
20
+ ] + super
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,26 +1,45 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
4
+ require_relative '../options/common'
2
5
 
3
6
  module RubyTerraform
4
7
  module Commands
5
8
  class Import < Base
6
- def switches
7
- %w[-config -backup -input -no-color -state -var -var-file]
8
- end
9
+ include RubyTerraform::Options::Common
9
10
 
10
- def sub_commands(_values)
11
+ def subcommands
11
12
  %w[import]
12
13
  end
13
14
 
14
- def arguments(values)
15
- [values[:address], values[:id]]
15
+ def options # rubocop:disable Metrics/MethodLength
16
+ %w[
17
+ -config
18
+ -backup
19
+ -input
20
+ -lock
21
+ -lock-timeout
22
+ -no-color
23
+ -parallelism
24
+ -provider
25
+ -state
26
+ -state-out
27
+ -var
28
+ -var-file
29
+ -ignore-remote-version
30
+ ] + super
31
+ end
32
+
33
+ def arguments(parameters)
34
+ [parameters[:address], parameters[:id]]
16
35
  end
17
36
 
18
- def option_default_values(_opts)
37
+ def parameter_defaults(_parameters)
19
38
  { vars: {}, var_files: [] }
20
39
  end
21
40
 
22
- def option_override_values(opts)
23
- { backup: opts[:no_backup] ? '-' : opts[:backup] }
41
+ def parameter_overrides(parameters)
42
+ { backup: parameters[:no_backup] ? '-' : parameters[:backup] }
24
43
  end
25
44
  end
26
45
  end
@@ -1,22 +1,41 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
4
+ require_relative '../options/common'
2
5
 
3
6
  module RubyTerraform
4
7
  module Commands
5
8
  class Init < Base
6
- def switches
7
- %w[-backend -backend-config -from-module -get -no-color -plugin-dir
8
- -force-copy]
9
- end
9
+ include RubyTerraform::Options::Common
10
10
 
11
- def sub_commands(_values)
11
+ def subcommands
12
12
  %w[init]
13
13
  end
14
14
 
15
- def arguments(values)
16
- [values[:path]]
15
+ def options # rubocop:disable Metrics/MethodLength
16
+ %w[
17
+ -backend
18
+ -backend-config
19
+ -force-copy
20
+ -from-module
21
+ -get
22
+ -get-plugins
23
+ -input
24
+ -lock
25
+ -lock-timeout
26
+ -no-color
27
+ -plugin-dir
28
+ -reconfigure
29
+ -upgrade
30
+ -verify-plugins
31
+ ] + super
32
+ end
33
+
34
+ def arguments(parameters)
35
+ [parameters[:path]]
17
36
  end
18
37
 
19
- def option_default_values(_opts)
38
+ def parameter_defaults(_parameters)
20
39
  { backend_config: {} }
21
40
  end
22
41
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class Login < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[login]
13
+ end
14
+
15
+ def arguments(parameters)
16
+ [parameters[:hostname]]
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class Logout < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[logout]
13
+ end
14
+
15
+ def arguments(parameters)
16
+ [parameters[:hostname]]
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,30 +1,40 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'stringio'
2
4
  require_relative 'base'
5
+ require_relative '../options/common'
3
6
 
4
7
  module RubyTerraform
5
8
  module Commands
6
9
  class Output < Base
10
+ include RubyTerraform::Options::Common
11
+
7
12
  def initialize_command
8
13
  return if defined?(@stdout) && @stdout.respond_to?(:string)
9
14
 
10
15
  @stdout = StringIO.new
11
16
  end
12
17
 
13
- def switches
14
- %w[-json -raw -no-color -state -module]
18
+ def subcommands
19
+ %w[output]
15
20
  end
16
21
 
17
- def sub_commands(_values)
18
- %w[output]
22
+ def options
23
+ %w[
24
+ -json
25
+ -raw
26
+ -no-color
27
+ -state
28
+ ] + super
19
29
  end
20
30
 
21
- def arguments(values)
22
- [values[:name]]
31
+ def arguments(parameters)
32
+ [parameters[:name]]
23
33
  end
24
34
 
25
- def do_after(opts)
35
+ def do_after(parameters)
26
36
  result = stdout.string
27
- opts[:name] ? result.chomp : result
37
+ parameters[:name] ? result.chomp : result
28
38
  end
29
39
  end
30
40
  end
@@ -1,21 +1,41 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'base'
4
+ require_relative '../options/common'
2
5
 
3
6
  module RubyTerraform
4
7
  module Commands
5
8
  class Plan < Base
6
- def switches
7
- %w[-destroy -input -no-color -out -state -target -var -var-file]
8
- end
9
+ include RubyTerraform::Options::Common
9
10
 
10
- def sub_commands(_values)
11
+ def subcommands
11
12
  %w[plan]
12
13
  end
13
14
 
14
- def arguments(values)
15
- [values[:directory]]
15
+ def options # rubocop:disable Metrics/MethodLength
16
+ %w[
17
+ -compact-warnings
18
+ -destroy
19
+ -detailed-exitcode
20
+ -input
21
+ -lock
22
+ -lock-timeout
23
+ -no-color
24
+ -out
25
+ -parallelism
26
+ -refresh
27
+ -state
28
+ -target
29
+ -var
30
+ -var-file
31
+ ] + super
32
+ end
33
+
34
+ def arguments(parameters)
35
+ [parameters[:directory]]
16
36
  end
17
37
 
18
- def option_default_values(_opts)
38
+ def parameter_defaults(_parameters)
19
39
  { vars: {}, var_files: [], targets: [] }
20
40
  end
21
41
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class Providers < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[providers]
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class ProvidersLock < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[providers lock]
13
+ end
14
+
15
+ def options
16
+ %w[
17
+ -fs-mirror
18
+ -net-mirror
19
+ -platform
20
+ ] + super
21
+ end
22
+
23
+ def arguments(parameters)
24
+ [parameters[:providers]]
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class ProvidersMirror < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[providers mirror]
13
+ end
14
+
15
+ def options
16
+ %w[-platform] + super
17
+ end
18
+
19
+ def arguments(parameters)
20
+ [parameters[:directory]]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class ProvidersSchema < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[providers schema]
13
+ end
14
+
15
+ def options
16
+ %w[-json] + super
17
+ end
18
+
19
+ def parameter_overrides(_parameters)
20
+ # Terraform 0.15 - at this time, the -json flag is a required option.
21
+ { json: true }
22
+ end
23
+ end
24
+ end
25
+ end