ruby-terraform 0.65.0.pre.8 → 0.65.0.pre.13

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 (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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fileutils'
2
4
 
3
5
  module RubyTerraform
@@ -10,8 +12,8 @@ module RubyTerraform
10
12
  @logger = logger || RubyTerraform.configuration.logger
11
13
  end
12
14
 
13
- def execute(opts = {})
14
- directory = opts[:directory] || @directory
15
+ def execute(parameters = {})
16
+ directory = parameters[:directory] || @directory
15
17
  begin
16
18
  logger.info "Cleaning terraform directory '#{directory}'."
17
19
  FileUtils.rm_r(directory, secure: true)
@@ -1,35 +1,46 @@
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 Destroy < Base
6
- def switches
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[destroy]
13
+ end
14
+
15
+ def options # rubocop:disable Metrics/MethodLength
7
16
  %w[
8
- -auto-approve
9
17
  -backup
10
- -force
18
+ -compact-warnings
19
+ -lock
20
+ -lock-timeout
21
+ -input
22
+ -auto-approve
11
23
  -no-color
24
+ -parallelism
25
+ -refresh
12
26
  -state
27
+ -state-out
13
28
  -target
14
29
  -var
15
30
  -var-file
16
- ]
17
- end
18
-
19
- def subcommands(_values)
20
- %w[destroy]
31
+ ] + super
21
32
  end
22
33
 
23
- def arguments(values)
24
- [values[:directory]]
34
+ def arguments(parameters)
35
+ [parameters[:directory]]
25
36
  end
26
37
 
27
- def option_default_values(_opts)
38
+ def parameter_defaults(_parameters)
28
39
  { vars: {}, var_files: [], targets: [] }
29
40
  end
30
41
 
31
- def option_override_values(opts)
32
- { backup: opts[:no_backup] ? '-' : opts[:backup] }
42
+ def parameter_overrides(parameters)
43
+ { backup: parameters[:no_backup] ? '-' : parameters[:backup] }
33
44
  end
34
45
  end
35
46
  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 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,25 +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
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[fmt]
13
+ end
14
+
15
+ def options
7
16
  %w[
8
- -check
9
- -diff
10
17
  -list
11
- -no-color
12
- -recursive
13
18
  -write
14
- ]
15
- end
16
-
17
- def subcommands(_values)
18
- %w[fmt]
19
+ -diff
20
+ -check
21
+ -recursive
22
+ ] + super
19
23
  end
20
24
 
21
- def arguments(values)
22
- [values[:directory]]
25
+ def arguments(parameters)
26
+ [parameters[:directory]]
23
27
  end
24
28
  end
25
29
  end
@@ -1,21 +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
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[get]
13
+ end
14
+
15
+ def options
7
16
  %w[
8
17
  -no-color
9
18
  -update
10
- ]
11
- end
12
-
13
- def subcommands(_values)
14
- %w[get]
19
+ ] + super
15
20
  end
16
21
 
17
- def arguments(values)
18
- [values[:directory]]
22
+ def arguments(parameters)
23
+ [parameters[:directory]]
19
24
  end
20
25
  end
21
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,34 +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
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[import]
13
+ end
14
+
15
+ def options # rubocop:disable Metrics/MethodLength
7
16
  %w[
8
17
  -config
9
18
  -backup
10
19
  -input
20
+ -lock
21
+ -lock-timeout
11
22
  -no-color
23
+ -parallelism
24
+ -provider
12
25
  -state
26
+ -state-out
13
27
  -var
14
28
  -var-file
15
- ]
16
- end
17
-
18
- def subcommands(_values)
19
- %w[import]
29
+ -ignore-remote-version
30
+ ] + super
20
31
  end
21
32
 
22
- def arguments(values)
23
- [values[:address], values[:id]]
33
+ def arguments(parameters)
34
+ [parameters[:address], parameters[:id]]
24
35
  end
25
36
 
26
- def option_default_values(_opts)
37
+ def parameter_defaults(_parameters)
27
38
  { vars: {}, var_files: [] }
28
39
  end
29
40
 
30
- def option_override_values(opts)
31
- { backup: opts[:no_backup] ? '-' : opts[:backup] }
41
+ def parameter_overrides(parameters)
42
+ { backup: parameters[:no_backup] ? '-' : parameters[:backup] }
32
43
  end
33
44
  end
34
45
  end
@@ -1,29 +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
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[init]
13
+ end
14
+
15
+ def options # rubocop:disable Metrics/MethodLength
7
16
  %w[
8
17
  -backend
9
18
  -backend-config
10
19
  -force-copy
11
20
  -from-module
12
21
  -get
22
+ -get-plugins
23
+ -input
24
+ -lock
25
+ -lock-timeout
13
26
  -no-color
14
27
  -plugin-dir
15
- ]
16
- end
17
-
18
- def subcommands(_values)
19
- %w[init]
28
+ -reconfigure
29
+ -upgrade
30
+ -verify-plugins
31
+ ] + super
20
32
  end
21
33
 
22
- def arguments(values)
23
- [values[:path]]
34
+ def arguments(parameters)
35
+ [parameters[:path]]
24
36
  end
25
37
 
26
- def option_default_values(_opts)
38
+ def parameter_defaults(_parameters)
27
39
  { backend_config: {} }
28
40
  end
29
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,36 +1,38 @@
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
7
- def initialize_command
8
- return if defined?(@stdout) && @stdout.respond_to?(:string)
10
+ include RubyTerraform::Options::Common
9
11
 
10
- @stdout = StringIO.new
12
+ def stdout
13
+ @stdout.respond_to?(:string) ? @stdout : (@stdout = StringIO.new)
11
14
  end
12
15
 
13
- def switches
16
+ def subcommands
17
+ %w[output]
18
+ end
19
+
20
+ def options
14
21
  %w[
15
22
  -json
16
- -module
17
- -no-color
18
23
  -raw
24
+ -no-color
19
25
  -state
20
- ]
21
- end
22
-
23
- def subcommands(_values)
24
- %w[output]
26
+ ] + super
25
27
  end
26
28
 
27
- def arguments(values)
28
- [values[:name]]
29
+ def arguments(parameters)
30
+ [parameters[:name]]
29
31
  end
30
32
 
31
- def do_after(opts)
33
+ def do_after(parameters)
32
34
  result = stdout.string
33
- opts[:name] ? result.chomp : result
35
+ parameters[:name] ? result.chomp : result
34
36
  end
35
37
  end
36
38
  end
@@ -1,30 +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
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[plan]
13
+ end
14
+
15
+ def options # rubocop:disable Metrics/MethodLength
7
16
  %w[
17
+ -compact-warnings
8
18
  -destroy
19
+ -detailed-exitcode
9
20
  -input
21
+ -lock
22
+ -lock-timeout
10
23
  -no-color
11
24
  -out
25
+ -parallelism
26
+ -refresh
12
27
  -state
13
28
  -target
14
29
  -var
15
30
  -var-file
16
- ]
17
- end
18
-
19
- def subcommands(_values)
20
- %w[plan]
31
+ ] + super
21
32
  end
22
33
 
23
- def arguments(values)
24
- [values[:directory]]
34
+ def arguments(parameters)
35
+ [parameters[:directory]]
25
36
  end
26
37
 
27
- def option_default_values(_opts)
38
+ def parameter_defaults(_parameters)
28
39
  { vars: {}, var_files: [], targets: [] }
29
40
  end
30
41
  end