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,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