ruby-terraform 0.65.0.pre.9 → 0.65.0.pre.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +18 -10
  3. data/lib/ruby_terraform.rb +131 -4
  4. data/lib/ruby_terraform/commands.rb +29 -8
  5. data/lib/ruby_terraform/commands/apply.rb +85 -6
  6. data/lib/ruby_terraform/commands/base.rb +21 -18
  7. data/lib/ruby_terraform/commands/clean.rb +2 -2
  8. data/lib/ruby_terraform/commands/destroy.rb +17 -8
  9. data/lib/ruby_terraform/commands/force_unlock.rb +24 -0
  10. data/lib/ruby_terraform/commands/format.rb +11 -9
  11. data/lib/ruby_terraform/commands/get.rb +8 -5
  12. data/lib/ruby_terraform/commands/graph.rb +24 -0
  13. data/lib/ruby_terraform/commands/import.rb +15 -6
  14. data/lib/ruby_terraform/commands/init.rb +16 -6
  15. data/lib/ruby_terraform/commands/login.rb +20 -0
  16. data/lib/ruby_terraform/commands/logout.rb +20 -0
  17. data/lib/ruby_terraform/commands/output.rb +10 -10
  18. data/lib/ruby_terraform/commands/plan.rb +15 -6
  19. data/lib/ruby_terraform/commands/providers.rb +16 -0
  20. data/lib/ruby_terraform/commands/providers_lock.rb +28 -0
  21. data/lib/ruby_terraform/commands/providers_mirror.rb +24 -0
  22. data/lib/ruby_terraform/commands/providers_schema.rb +25 -0
  23. data/lib/ruby_terraform/commands/refresh.rb +19 -6
  24. data/lib/ruby_terraform/commands/remote_config.rb +4 -4
  25. data/lib/ruby_terraform/commands/show.rb +8 -6
  26. data/lib/ruby_terraform/commands/state_list.rb +20 -0
  27. data/lib/ruby_terraform/commands/state_move.rb +34 -0
  28. data/lib/ruby_terraform/commands/state_pull.rb +16 -0
  29. data/lib/ruby_terraform/commands/state_push.rb +24 -0
  30. data/lib/ruby_terraform/commands/state_remove.rb +32 -0
  31. data/lib/ruby_terraform/commands/state_replace_provider.rb +35 -0
  32. data/lib/ruby_terraform/commands/state_show.rb +24 -0
  33. data/lib/ruby_terraform/commands/taint.rb +36 -0
  34. data/lib/ruby_terraform/commands/untaint.rb +37 -0
  35. data/lib/ruby_terraform/commands/validate.rb +8 -9
  36. data/lib/ruby_terraform/commands/workspace_delete.rb +32 -0
  37. data/lib/ruby_terraform/commands/workspace_list.rb +24 -0
  38. data/lib/ruby_terraform/commands/workspace_new.rb +32 -0
  39. data/lib/ruby_terraform/commands/workspace_select.rb +24 -0
  40. data/lib/ruby_terraform/commands/workspace_show.rb +16 -0
  41. data/lib/ruby_terraform/options.rb +26 -3
  42. data/lib/ruby_terraform/options/common.rb +12 -0
  43. data/lib/ruby_terraform/options/definition.rb +172 -0
  44. data/lib/ruby_terraform/options/definitions.rb +103 -0
  45. data/lib/ruby_terraform/options/factory.rb +10 -101
  46. data/lib/ruby_terraform/options/name.rb +11 -19
  47. data/lib/ruby_terraform/options/types.rb +27 -0
  48. data/lib/ruby_terraform/options/types/base.rb +6 -13
  49. data/lib/ruby_terraform/options/types/flag.rb +1 -3
  50. data/lib/ruby_terraform/options/types/standard.rb +1 -27
  51. data/lib/ruby_terraform/options/values.rb +38 -0
  52. data/lib/ruby_terraform/options/values/base.rb +15 -0
  53. data/lib/ruby_terraform/options/values/boolean.rb +13 -11
  54. data/lib/ruby_terraform/options/values/complex.rb +19 -0
  55. data/lib/ruby_terraform/options/values/key_value.rb +21 -0
  56. data/lib/ruby_terraform/options/values/string.rb +17 -0
  57. data/lib/ruby_terraform/output.rb +7 -7
  58. data/lib/ruby_terraform/version.rb +1 -1
  59. data/ruby_terraform.gemspec +3 -1
  60. metadata +63 -6
  61. data/lib/ruby_terraform/commands/workspace.rb +0 -26
  62. data/lib/ruby_terraform/options/types/boolean.rb +0 -18
@@ -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
@@ -1,23 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'base'
4
+ require_relative '../options/common'
4
5
 
5
6
  module RubyTerraform
6
7
  module Commands
7
8
  class Refresh < Base
8
- def options
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[refresh]
13
+ end
14
+
15
+ def options # rubocop:disable Metrics/MethodLength
9
16
  %w[
17
+ -backup
18
+ -compact-warnings
10
19
  -input
20
+ -lock
21
+ -lock-timeout
11
22
  -no-color
23
+ -parallelism
12
24
  -state
25
+ -state-out
13
26
  -target
14
27
  -var
15
28
  -var-file
16
- ]
17
- end
18
-
19
- def subcommands(_parameters)
20
- %w[refresh]
29
+ ] + super
21
30
  end
22
31
 
23
32
  def arguments(parameters)
@@ -27,6 +36,10 @@ module RubyTerraform
27
36
  def parameter_defaults(_parameters)
28
37
  { vars: {}, var_files: [], targets: [] }
29
38
  end
39
+
40
+ def parameter_overrides(parameters)
41
+ { backup: parameters[:no_backup] ? '-' : parameters[:backup] }
42
+ end
30
43
  end
31
44
  end
32
45
  end
@@ -5,6 +5,10 @@ require_relative 'base'
5
5
  module RubyTerraform
6
6
  module Commands
7
7
  class RemoteConfig < Base
8
+ def subcommands
9
+ %w[remote config]
10
+ end
11
+
8
12
  def options
9
13
  %w[
10
14
  -backend
@@ -13,10 +17,6 @@ module RubyTerraform
13
17
  ]
14
18
  end
15
19
 
16
- def subcommands(_parameters)
17
- %w[remote config]
18
- end
19
-
20
20
  def parameter_defaults(_parameters)
21
21
  { backend_config: {} }
22
22
  end
@@ -1,20 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'base'
4
+ require_relative '../options/common'
4
5
 
5
6
  module RubyTerraform
6
7
  module Commands
7
8
  class Show < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[show]
13
+ end
14
+
8
15
  def options
9
16
  %w[
10
17
  -json
11
- -module-depth
12
18
  -no-color
13
- ]
14
- end
15
-
16
- def subcommands(_parameters)
17
- %w[show]
19
+ ] + super
18
20
  end
19
21
 
20
22
  def arguments(parameters)
@@ -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 StateList < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[state list]
13
+ end
14
+
15
+ def arguments(parameters)
16
+ [parameters[:address]]
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class StateMove < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[state mv]
13
+ end
14
+
15
+ def options
16
+ %w[
17
+ -backup
18
+ -backup-out
19
+ -state
20
+ -state-out
21
+ -ignore-remote-version
22
+ ] + super
23
+ end
24
+
25
+ def arguments(parameters)
26
+ [parameters[:source], parameters[:destination]]
27
+ end
28
+
29
+ def parameter_overrides(parameters)
30
+ { backup: parameters[:no_backup] ? '-' : parameters[:backup] }
31
+ end
32
+ end
33
+ end
34
+ 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 StatePull < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[state pull]
13
+ end
14
+ end
15
+ end
16
+ 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 StatePush < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[state push]
13
+ end
14
+
15
+ def options
16
+ %w[-ignore-remote-version] + super
17
+ end
18
+
19
+ def arguments(parameters)
20
+ [parameters[:path]]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class StateRemove < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[state rm]
13
+ end
14
+
15
+ def options
16
+ %w[
17
+ -backup
18
+ -state
19
+ -ignore-remote-version
20
+ ] + super
21
+ end
22
+
23
+ def arguments(parameters)
24
+ [parameters[:address]]
25
+ end
26
+
27
+ def parameter_overrides(parameters)
28
+ { backup: parameters[:no_backup] ? '-' : parameters[:backup] }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class StateReplaceProvider < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[state replace-provider]
13
+ end
14
+
15
+ def options
16
+ %w[
17
+ -auto-approve
18
+ -backup
19
+ -lock
20
+ -lock-timeout
21
+ -state
22
+ -ignore-remote-version
23
+ ] + super
24
+ end
25
+
26
+ def arguments(parameters)
27
+ [parameters[:from], parameters[:to]]
28
+ end
29
+
30
+ def parameter_overrides(parameters)
31
+ { backup: parameters[:no_backup] ? '-' : parameters[:backup] }
32
+ end
33
+ end
34
+ end
35
+ 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 StateShow < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[state show]
13
+ end
14
+
15
+ def options
16
+ %w[-state] + super
17
+ end
18
+
19
+ def arguments(parameters)
20
+ [parameters[:address]]
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class Taint < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[taint]
13
+ end
14
+
15
+ def options
16
+ %w[
17
+ -allow-missing
18
+ -backup
19
+ -lock
20
+ -lock-timeout
21
+ -state
22
+ -state-out
23
+ -ignore-remote-version
24
+ ] + super
25
+ end
26
+
27
+ def arguments(parameters)
28
+ [parameters[:address]]
29
+ end
30
+
31
+ def parameter_overrides(parameters)
32
+ { backup: parameters[:no_backup] ? '-' : parameters[:backup] }
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class Untaint < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[untaint]
13
+ end
14
+
15
+ def options
16
+ %w[
17
+ -allow-missing
18
+ -backup
19
+ -lock
20
+ -lock-timeout
21
+ -no-color
22
+ -state
23
+ -state-out
24
+ -ignore-remote-version
25
+ ] + super
26
+ end
27
+
28
+ def arguments(parameters)
29
+ [parameters[:name]]
30
+ end
31
+
32
+ def parameter_overrides(parameters)
33
+ { backup: parameters[:no_backup] ? '-' : parameters[:backup] }
34
+ end
35
+ end
36
+ end
37
+ end
@@ -1,23 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'base'
4
+ require_relative '../options/common'
4
5
 
5
6
  module RubyTerraform
6
7
  module Commands
7
8
  class Validate < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[validate]
13
+ end
14
+
8
15
  def options
9
16
  %w[
10
- -check-variables
11
17
  -json
12
18
  -no-color
13
- -state
14
- -var
15
- -var-file
16
- ]
17
- end
18
-
19
- def subcommands(_parameters)
20
- %w[validate]
19
+ ] + super
21
20
  end
22
21
 
23
22
  def arguments(parameters)
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'base'
4
+ require_relative '../options/common'
5
+
6
+ module RubyTerraform
7
+ module Commands
8
+ class WorkspaceDelete < Base
9
+ include RubyTerraform::Options::Common
10
+
11
+ def subcommands
12
+ %w[workspace delete]
13
+ end
14
+
15
+ def options
16
+ %w[
17
+ -force
18
+ -lock
19
+ -lock-timeout
20
+ ] + super
21
+ end
22
+
23
+ def arguments(parameters)
24
+ [parameters[:workspace], parameters[:directory]]
25
+ end
26
+
27
+ def parameter_defaults(_parameters)
28
+ { directory: nil }
29
+ end
30
+ end
31
+ end
32
+ end