ruby-terraform 0.65.0.pre.15 → 1.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +15 -15
  3. data/README.md +148 -397
  4. data/Rakefile +25 -0
  5. data/lib/ruby_terraform.rb +707 -45
  6. data/lib/ruby_terraform/commands.rb +0 -2
  7. data/lib/ruby_terraform/commands/apply.rb +7 -7
  8. data/lib/ruby_terraform/commands/base.rb +4 -1
  9. data/lib/ruby_terraform/commands/destroy.rb +6 -5
  10. data/lib/ruby_terraform/commands/force_unlock.rb +6 -4
  11. data/lib/ruby_terraform/commands/format.rb +8 -4
  12. data/lib/ruby_terraform/commands/get.rb +6 -4
  13. data/lib/ruby_terraform/commands/graph.rb +11 -3
  14. data/lib/ruby_terraform/commands/import.rb +8 -7
  15. data/lib/ruby_terraform/commands/init.rb +16 -6
  16. data/lib/ruby_terraform/commands/login.rb +2 -2
  17. data/lib/ruby_terraform/commands/logout.rb +2 -2
  18. data/lib/ruby_terraform/commands/output.rb +2 -2
  19. data/lib/ruby_terraform/commands/plan.rb +6 -3
  20. data/lib/ruby_terraform/commands/providers.rb +9 -3
  21. data/lib/ruby_terraform/commands/providers_lock.rb +10 -7
  22. data/lib/ruby_terraform/commands/providers_mirror.rb +3 -3
  23. data/lib/ruby_terraform/commands/providers_schema.rb +21 -2
  24. data/lib/ruby_terraform/commands/refresh.rb +70 -3
  25. data/lib/ruby_terraform/commands/show.rb +26 -3
  26. data/lib/ruby_terraform/commands/state_list.rb +54 -3
  27. data/lib/ruby_terraform/commands/state_move.rb +64 -6
  28. data/lib/ruby_terraform/commands/state_pull.rb +24 -2
  29. data/lib/ruby_terraform/commands/state_push.rb +49 -3
  30. data/lib/ruby_terraform/commands/state_remove.rb +55 -7
  31. data/lib/ruby_terraform/commands/state_replace_provider.rb +39 -6
  32. data/lib/ruby_terraform/commands/state_show.rb +26 -2
  33. data/lib/ruby_terraform/commands/taint.rb +63 -2
  34. data/lib/ruby_terraform/commands/untaint.rb +55 -2
  35. data/lib/ruby_terraform/commands/validate.rb +51 -6
  36. data/lib/ruby_terraform/commands/workspace_delete.rb +29 -7
  37. data/lib/ruby_terraform/commands/workspace_list.rb +21 -6
  38. data/lib/ruby_terraform/commands/workspace_new.rb +28 -7
  39. data/lib/ruby_terraform/commands/workspace_select.rb +23 -7
  40. data/lib/ruby_terraform/commands/workspace_show.rb +17 -2
  41. data/lib/ruby_terraform/options.rb +1 -1
  42. data/lib/ruby_terraform/options/definition.rb +3 -1
  43. data/lib/ruby_terraform/options/definitions.rb +12 -3
  44. data/lib/ruby_terraform/options/{common.rb → global.rb} +1 -1
  45. data/lib/ruby_terraform/options/types.rb +0 -1
  46. data/lib/ruby_terraform/options/types/flag.rb +8 -4
  47. data/lib/ruby_terraform/options/types/standard.rb +20 -6
  48. data/lib/ruby_terraform/version.rb +1 -1
  49. data/ruby_terraform.gemspec +2 -2
  50. metadata +9 -12
  51. data/lib/ruby_terraform/commands/clean.rb +0 -26
  52. data/lib/ruby_terraform/commands/remote_config.rb +0 -25
  53. data/lib/ruby_terraform/options/types/base.rb +0 -19
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'yaml'
4
+ require 'yard'
4
5
  require 'rake_circle_ci'
5
6
  require 'rake_github'
6
7
  require 'rake_ssh'
@@ -46,6 +47,11 @@ end
46
47
 
47
48
  RuboCop::RakeTask.new
48
49
 
50
+ YARD::Rake::YardocTask.new do |t|
51
+ t.files = ['lib/**/*.rb']
52
+ t.options = ['--embed-mixins', '--output-dir', 'docs']
53
+ end
54
+
49
55
  namespace :library do
50
56
  desc 'Run all checks of the library'
51
57
  task check: [:rubocop]
@@ -54,6 +60,25 @@ namespace :library do
54
60
  task fix: [:'rubocop:auto_correct']
55
61
  end
56
62
 
63
+ namespace :documentation do
64
+ desc 'Generate documentation'
65
+ task generate: [:yard]
66
+
67
+ desc 'Commit documentation'
68
+ task :commit, [:skip] do |_, args|
69
+ args.with_defaults(skip: 'true')
70
+
71
+ skip_ci = args.skip == 'true'
72
+
73
+ sh('git', 'commit',
74
+ '-a',
75
+ '-m', "Generate latest documentation#{skip_ci ? ' [ci skip]' : ''}")
76
+ end
77
+
78
+ desc 'Update documentation'
79
+ task update: %i[generate commit]
80
+ end
81
+
57
82
  namespace :test do
58
83
  RSpec::Core::RakeTask.new(:unit)
59
84
  end
@@ -23,6 +23,8 @@ module RubyTerraform
23
23
  end
24
24
  end
25
25
 
26
+ # rubocop:disable Metrics/ModuleLength
27
+
26
28
  module ClassMethods
27
29
  # Invokes the +terraform apply+ command which creates or updates
28
30
  # infrastructure according to terraform configuration files in the provided
@@ -34,10 +36,11 @@ module RubyTerraform
34
36
  # actions described in that plan without any confirmation prompt.
35
37
  #
36
38
  # @param parameters The parameters used to invoke the command
37
- # @option parameters [String] :directory The directory containing terraform
38
- # configuration; required unless +:plan+ is provided.
39
+ # @option parameters [String] :directory The path to a directory containing
40
+ # terraform configuration (deprecated in terraform 0.14, removed in
41
+ # terraform 0.15, use +:chdir+ instead).
39
42
  # @option parameters [String] :plan The path to a pre-computed plan to be
40
- # applied; required unless +:directory+ is provided.
43
+ # applied.
41
44
  # @option parameters [String] :chdir The path of a working directory to
42
45
  # switch to before executing the given subcommand.
43
46
  # @option parameters [Boolean] :auto_approve (false) If +true+, skips
@@ -101,8 +104,9 @@ module RubyTerraform
101
104
  # infrastructure.
102
105
  #
103
106
  # @param parameters The parameters used to invoke the command
104
- # @option parameters [String] :directory The directory containing terraform
105
- # configuration; required.
107
+ # @option parameters [String] :directory The path to a directory containing
108
+ # terraform configuration (deprecated in terraform 0.14, removed in
109
+ # terraform 0.15, use +:chdir+ instead).
106
110
  # @option parameters [String] :chdir The path of a working directory to
107
111
  # switch to before executing the given subcommand.
108
112
  # @option parameters [Boolean] :auto_approve (false) If +true+, skips
@@ -174,6 +178,9 @@ module RubyTerraform
174
178
  # @param parameters The parameters used to invoke the command
175
179
  # @option parameters [String] :lock_id The lock ID output when attempting an
176
180
  # operation that failed due to a lock; required.
181
+ # @option parameters [String] :directory The path to a directory containing
182
+ # terraform configuration (deprecated in terraform 0.14, removed in
183
+ # terraform 0.15, use +:chdir+ instead).
177
184
  # @option parameters [String] :chdir The path of a working directory to
178
185
  # switch to before executing the given subcommand.
179
186
  # @option parameters [Boolean] :force (false) If +true+, does not ask for
@@ -199,8 +206,9 @@ module RubyTerraform
199
206
  # terraform language native syntax; JSON is not supported.
200
207
  #
201
208
  # @param parameters The parameters used to invoke the command
202
- # @option parameters [String] :directory The directory containing terraform
203
- # configuration.
209
+ # @option parameters [String] :directory The path to a directory containing
210
+ # terraform configuration (deprecated in terraform 0.14, removed in
211
+ # terraform 0.15, use +:chdir+ instead).
204
212
  # @option parameters [String] :chdir The path of a working directory to
205
213
  # switch to before executing the given subcommand.
206
214
  # @option parameters [Boolean] :list (false) If +true+, lists files whose
@@ -212,6 +220,8 @@ module RubyTerraform
212
220
  # @option parameters [Boolean] :check (false) If +true+, checks if the input
213
221
  # is formatted; if any input is not properly formatted, an
214
222
  # {RubyTerraform::Errors::ExecutionError} will be thrown.
223
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
224
+ # from the command should be in color.
215
225
  # @option parameters [Boolean] :recursive (false) If +true+, also processes
216
226
  # files in subdirectories; by default, only the provided +:directory+ is
217
227
  # processed.
@@ -223,6 +233,7 @@ module RubyTerraform
223
233
  def format(parameters = {})
224
234
  exec(RubyTerraform::Commands::Format, parameters)
225
235
  end
236
+ alias fmt format
226
237
 
227
238
  # Invokes the +terraform get+ command which downloads and installs modules
228
239
  # needed for the given configuration.
@@ -236,8 +247,9 @@ module RubyTerraform
236
247
  # separately.
237
248
  #
238
249
  # @param parameters The parameters used to invoke the command
239
- # @option parameters [String] :directory The directory containing terraform
240
- # configuration; required.
250
+ # @option parameters [String] :directory The path to a directory containing
251
+ # terraform configuration (deprecated in terraform 0.14, removed in
252
+ # terraform 0.15, use +:chdir+ instead).
241
253
  # @option parameters [String] :chdir The path of a working directory to
242
254
  # switch to before executing the given subcommand.
243
255
  # @option parameters [Boolean] :update (false) If +true+, checks
@@ -269,6 +281,9 @@ module RubyTerraform
269
281
  # passed as an argument.
270
282
  #
271
283
  # @param parameters The parameters used to invoke the command
284
+ # @option parameters [String] :directory The path to a directory containing
285
+ # terraform configuration (deprecated in terraform 0.14, removed in
286
+ # terraform 0.15, use +:chdir+ instead).
272
287
  # @option parameters [String] :chdir The path of a working directory to
273
288
  # switch to before executing the given subcommand.
274
289
  # @option parameters [String] :plan Render the graph using the specified
@@ -317,10 +332,9 @@ module RubyTerraform
317
332
  # being imported.
318
333
  #
319
334
  # @param parameters The parameters used to invoke the command
320
- # @option parameters [String] :directory The path to a directory of
321
- # terraform configuration files to use to configure the provider; defaults
322
- # to the current directory; if no config files are present, they must be
323
- # provided via the input prompts or env vars.
335
+ # @option parameters [String] :directory The path to a directory containing
336
+ # terraform configuration (deprecated in terraform 0.14, removed in
337
+ # terraform 0.15, use +:chdir+ instead).
324
338
  # @option parameters [String] :address The address to import the resource
325
339
  # to; required.
326
340
  # @option parameters [String] :id The resource-specific ID identifying the
@@ -331,6 +345,8 @@ module RubyTerraform
331
345
  # file before modifying; defaults to the +:state_out+ path with
332
346
  # +".backup"+ extension; set +:no_backup+ to +true+ to skip backups
333
347
  # entirely (legacy).
348
+ # @option parameters [Boolean] :allow_missing_config (false) Whether or not
349
+ # to allow import when no resource configuration block exists.
334
350
  # @option parameters [Boolean] :input (true) When +false+, will not ask for
335
351
  # input for variables not directly set.
336
352
  # @option parameters [Boolean] :lock (true) When +true+, locks the state
@@ -397,7 +413,8 @@ module RubyTerraform
397
413
  #
398
414
  # @param parameters The parameters used to invoke the command
399
415
  # @option parameters [String] :path The path to initialize; defaults to the
400
- # current directory.
416
+ # current directory (deprecated in terraform 0.14, removed in terraform
417
+ # 0.15, use +:chdir+ instead).
401
418
  # @option parameters [String] :chdir The path of a working directory to
402
419
  # switch to before executing the given subcommand.
403
420
  # @option parameters [Boolean] :backend (true) Whether or not to configure
@@ -424,7 +441,14 @@ module RubyTerraform
424
441
  # from the command should be in color.
425
442
  # @option parameters [String] :plugin_dir The path to a directory containing
426
443
  # plugin binaries; this overrides all default search paths for plugins,
427
- # and prevents the automatic installation of plugins.
444
+ # and prevents the automatic installation of plugins; if both
445
+ # +:plugin_dir+ and +:plugin_dirs+ are provided, all plugin directories
446
+ # will be passed to Terraform.
447
+ # @option parameters [Array<String>] :plugin_dirs+: An array of paths to
448
+ # directories containing plugin binaries; this overrides all default
449
+ # search paths for plugins, and prevents the automatic installation of
450
+ # plugins; if both +:plugin_dir+ and +:plugin_dirs+ are provided, all
451
+ # plugin directories will be passed to Terraform.
428
452
  # @option parameters [Boolean] :reconfigure (false) If +true+, reconfigures
429
453
  # the backend, ignoring any saved configuration.
430
454
  # @option parameters [Boolean] :upgrade (false) If +true+, when installing
@@ -433,6 +457,8 @@ module RubyTerraform
433
457
  # @option parameters [Boolean] :verify_plugins (true) Whether or not to
434
458
  # verify plugins for this configuration (deprecated, removed in terraform
435
459
  # 0.15).
460
+ # @option parameters [String] :lockfile Sets a dependency lockfile mode;
461
+ # currently only "readonly" is valid.
436
462
  #
437
463
  # @example Basic Invocation
438
464
  # RubyTerraform.init(
@@ -520,8 +546,9 @@ module RubyTerraform
520
546
  # the {#apply} command to perform exactly the actions described in the plan.
521
547
  #
522
548
  # @param parameters The parameters used to invoke the command
523
- # @option parameters [String] :plan The path to output the plan if it should
524
- # be saved to a file.
549
+ # @option parameters [String] :plan The path to a directory containing
550
+ # terraform configuration (deprecated in terraform 0.14, removed in
551
+ # terraform 0.15, use +:chdir+ instead).
525
552
  # @option parameters [String] :chdir The path of a working directory to
526
553
  # switch to before executing the given subcommand.
527
554
  # @option parameters [Boolean] :compact_warnings (false) When +true+, if
@@ -587,6 +614,9 @@ module RubyTerraform
587
614
  # plugins are needed and why particular versions are selected.
588
615
  #
589
616
  # @param parameters The parameters used to invoke the command
617
+ # @option parameters [String] :directory The path to a directory containing
618
+ # terraform configuration (deprecated in terraform 0.14, removed in
619
+ # terraform 0.15, use +:chdir+ instead).
590
620
  # @option parameters [String] :chdir The path of a working directory to
591
621
  # switch to before executing the given subcommand.
592
622
  #
@@ -619,6 +649,13 @@ module RubyTerraform
619
649
  # more provider source addresses on the command line.
620
650
  #
621
651
  # @param parameters The parameters used to invoke the command
652
+ # @option parameters [String] :provider The provider source address for
653
+ # which the lock file should be updated; if both +:provider+ and
654
+ # +:providers+ are provided, all providers will be passed to Terraform.
655
+ # @option parameters [Array<String>] :providers An array of provider source
656
+ # addresses for which the lock file should be updated; if both +:provider+
657
+ # and +:providers+ are provided, all providers will be passed to
658
+ # Terraform.
622
659
  # @option parameters [String] :providers The provider source addresses for
623
660
  # which the lock file should be updated.
624
661
  # @option parameters [String] :chdir The path of a working directory to
@@ -654,7 +691,7 @@ module RubyTerraform
654
691
  # RubyTerraform.providers_lock(
655
692
  # fs_mirror: "/usr/local/terraform/providers",
656
693
  # platforms: ["windows_amd64", "darwin_amd64", "linux_amd64"],
657
- # providers: "tf.example.com/ourcompany/ourplatform")
694
+ # provider: "tf.example.com/ourcompany/ourplatform")
658
695
  #
659
696
  def providers_lock(parameters = {})
660
697
  exec(RubyTerraform::Commands::ProvidersLock, parameters)
@@ -693,7 +730,7 @@ module RubyTerraform
693
730
  # to Terraform.
694
731
  #
695
732
  # @example Basic Invocation
696
- # RubyTerraform.platforms_mirror(
733
+ # RubyTerraform.providers_mirror(
697
734
  # directory: './plugins',
698
735
  # platforms: ["windows_amd64", "darwin_amd64", "linux_amd64"])
699
736
  #
@@ -701,34 +738,654 @@ module RubyTerraform
701
738
  exec(RubyTerraform::Commands::ProvidersMirror, parameters)
702
739
  end
703
740
 
704
- {
705
- clean: RubyTerraform::Commands::Clean,
706
- providers_schema: RubyTerraform::Commands::ProvidersSchema,
707
- refresh: RubyTerraform::Commands::Refresh,
708
- remote_config: RubyTerraform::Commands::RemoteConfig,
709
- show: RubyTerraform::Commands::Show,
710
- state_list: RubyTerraform::Commands::StateList,
711
- state_mv: RubyTerraform::Commands::StateMove,
712
- state_pull: RubyTerraform::Commands::StatePull,
713
- state_push: RubyTerraform::Commands::StatePush,
714
- state_replace_provider: RubyTerraform::Commands::StateReplaceProvider,
715
- state_rm: RubyTerraform::Commands::StateRemove,
716
- state_show: RubyTerraform::Commands::StateShow,
717
- taint: RubyTerraform::Commands::Taint,
718
- untaint: RubyTerraform::Commands::Untaint,
719
- validate: RubyTerraform::Commands::Validate,
720
- workspace_list: RubyTerraform::Commands::WorkspaceList,
721
- workspace_select: RubyTerraform::Commands::WorkspaceSelect,
722
- workspace_new: RubyTerraform::Commands::WorkspaceNew,
723
- workspace_delete: RubyTerraform::Commands::WorkspaceDelete,
724
- workspace_show: RubyTerraform::Commands::WorkspaceShow
725
- }.each do |method, command_class|
726
- define_method(method) do |parameters = {}|
727
- exec(command_class, parameters)
728
- end
741
+ # Invokes the +terraform providers schema+ command which prints out a json
742
+ # representation of the schemas for all providers used in the current
743
+ # configuration.
744
+ #
745
+ # @param parameters The parameters used to invoke the command
746
+ # @option parameters [String] :chdir The path of a working directory to
747
+ # switch to before executing the given subcommand.
748
+ #
749
+ # @example Basic Invocation
750
+ # RubyTerraform.providers_schema(
751
+ # directory: 'infra/networking')
752
+ #
753
+ def providers_schema(parameters = {})
754
+ exec(RubyTerraform::Commands::ProvidersSchema, parameters)
755
+ end
756
+
757
+ # Invokes the +terraform refresh+ command which updates the state file of
758
+ # your infrastructure with metadata that matches the physical resources they
759
+ # are tracking.
760
+ #
761
+ # This will not modify your infrastructure, but it can modify your state
762
+ # file to update metadata. This metadata might cause new changes to occur
763
+ # when you generate a plan or call apply next.
764
+ #
765
+ # @param parameters The parameters used to invoke the command
766
+ # @option parameters [String] :directory The path to a directory containing
767
+ # terraform configuration (deprecated in terraform 0.14, removed in
768
+ # terraform 0.15, use +:chdir+ instead).
769
+ # @option parameters [String] :chdir The path of a working directory to
770
+ # switch to before executing the given subcommand.
771
+ # @option parameters [String] :backup The path to backup the existing state
772
+ # file before modifying; defaults to the +:state_out+ path with
773
+ # +".backup"+ extension; set +:no_backup+ to +true+ to skip backups
774
+ # entirely (legacy).
775
+ # @option parameters [Boolean] :compact_warnings (false) When +true+, if
776
+ # terraform produces any warnings that are not accompanied by errors,
777
+ # they are shown in a more compact form that includes only the summary
778
+ # messages.
779
+ # @option parameters [Boolean] :input (true) When +false+, will not ask for
780
+ # input for variables not directly set.
781
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
782
+ # file when locking is supported; when +false+, does not lock the state
783
+ # file.
784
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
785
+ # state lock.
786
+ # @option parameters [Boolean] :no_backup (false) When +true+, no backup
787
+ # file will be written (legacy).
788
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
789
+ # from the command should be in color.
790
+ # @option parameters [Integer] :parallelism (10) The number of parallel
791
+ # resource operations.
792
+ # @option parameters [Boolean] :refresh (true) When +true+, updates state
793
+ # prior to checking for differences; when +false+ uses locally available
794
+ # state; this has no effect when +:plan+ is provided.
795
+ # @option parameters [String] :state ("terraform.tfstate") The path to the
796
+ # state file from which to read state and in which to store state (unless
797
+ # +:state_out+ is specified) (legacy).
798
+ # @option parameters [String] :state_out The path to write state to that is
799
+ # different than +:state+; this can be used to preserve the old state
800
+ # (legacy).
801
+ # @option parameters [String] :target The address of a resource to target;
802
+ # if both +:target+ and +:targets+ are provided, all targets will be
803
+ # passed to terraform.
804
+ # @option parameters [Array<String>] :targets An array of resource addresses
805
+ # to target; if both +:target+ and +:targets+ are provided, all targets
806
+ # will be passed to terraform.
807
+ # @option parameters [Hash<String, Object>] :vars A map of variables to be
808
+ # passed to the terraform configuration.
809
+ # @option parameters [String] :var_file The path to a terraform var file;
810
+ # if both +:var_file+ and +:var_files+ are provided, all var files will be
811
+ # passed to terraform.
812
+ # @option parameters [Array<String>] :var_files An array of paths to
813
+ # terraform var files; if both +:var_file+ and +:var_files+ are provided,
814
+ # all var files will be passed to terraform.
815
+ #
816
+ # @example Basic Invocation
817
+ # RubyTerraform.refresh(
818
+ # directory: 'infra/networking',
819
+ # vars: {
820
+ # region: 'eu-central'
821
+ # })
822
+ #
823
+ def refresh(parameters = {})
824
+ exec(RubyTerraform::Commands::Refresh, parameters)
825
+ end
826
+
827
+ # Invokes the +terraform show+ command which reads and outputs a Terraform
828
+ # state or plan file in a human-readable form. If no path is specified, the
829
+ # current state will be shown.
830
+ #
831
+ # @param parameters The parameters used to invoke the command
832
+ # @option parameters [String] :path The path to a state file or plan to
833
+ # show.
834
+ # @option parameters [String] :chdir The path of a working directory to
835
+ # switch to before executing the given subcommand.
836
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
837
+ # from the command should be in color.
838
+ # @option parameters [Boolean] :json (false) If +true+, outputs the
839
+ # Terraform plan or state in a machine-readable form.
840
+ #
841
+ # @example Basic Invocation
842
+ # RubyTerraform.show
843
+ #
844
+ def show(parameters = {})
845
+ exec(RubyTerraform::Commands::Show, parameters)
846
+ end
847
+
848
+ # Invokes the +terraform state list+ command which lists resources in the
849
+ # Terraform state.
850
+ #
851
+ # This command lists resource instances in the Terraform state. The address
852
+ # option can be used to filter the instances by resource or module. If no
853
+ # pattern is given, all resource instances are listed.
854
+ #
855
+ # The addresses must either be module addresses or absolute resource
856
+ # addresses, such as:
857
+ #
858
+ # * +aws_instance.example+
859
+ # * +module.example+
860
+ # * +module.example.module.child+
861
+ # * +module.example.aws_instance.example+
862
+ #
863
+ # An {RubyTerraform::Errors::ExecutionError} will be raised if any of the
864
+ # resources or modules given as filter addresses do not exist in the state.
865
+ #
866
+ # @param parameters The parameters used to invoke the command
867
+ # @option parameters [String] :address The module address or absolute
868
+ # resource address to filter by; if both +:address+ and +:addresses+ are
869
+ # provided, all addresses will be passed to Terraform.
870
+ # @option parameters [Array<String>] :addresses An array of module addresses
871
+ # or absolute resource addresses to filter by; if both +:address+ and
872
+ # +:addresses+ are provided, all addresses will be passed to Terraform.
873
+ # @option parameters [String] :chdir The path of a working directory to
874
+ # switch to before executing the given subcommand.
875
+ # @option parameters [String] :state The path to a Terraform state file to
876
+ # use to look up Terraform-managed resources; by default, Terraform will
877
+ # consult the state of the currently-selected workspace.
878
+ # @option parameters [String] :id When provided, filters the results to
879
+ # include only instances whose resource types have an attribute named "id"
880
+ # whose value equals the given id string.
881
+ #
882
+ # @example Basic Invocation
883
+ # RubyTerraform.state_list
884
+ #
885
+ def state_list(parameters = {})
886
+ exec(RubyTerraform::Commands::StateList, parameters)
887
+ end
888
+
889
+ # Invokes the +terraform state mv+ command which moves an item in the state.
890
+ #
891
+ # This command will move an item matched by the address given to the
892
+ # destination address. This command can also move to a destination address
893
+ # in a completely different state file.
894
+ #
895
+ # This can be used for simple resource renaming, moving items to and from
896
+ # a module, moving entire modules, and more. And because this command can
897
+ # also move data to a completely new state, it can also be used for
898
+ # refactoring one configuration into multiple separately managed Terraform
899
+ # configurations.
900
+ #
901
+ # This command will output a backup copy of the state prior to saving any
902
+ # changes. The backup cannot be disabled. Due to the destructive nature
903
+ # of this command, backups are required.
904
+ #
905
+ # If you're moving an item to a different state file, a backup will be
906
+ # created for each state file.
907
+ #
908
+ # @param parameters The parameters used to invoke the command
909
+ # @option parameters [String] :source The source address of the item to
910
+ # move; required.
911
+ # @option parameters [String] :destination The destination address to move
912
+ # the item to; required.
913
+ # @option parameters [String] :chdir The path of a working directory to
914
+ # switch to before executing the given subcommand.
915
+ # @option parameters [Boolean] :dry_run (false) When +true+, prints out what
916
+ # would've been moved but doesn't actually move anything.
917
+ # @option parameters [String] :backup The path where Terraform should write
918
+ # the backup for the original state; this can't be disabled; if not set,
919
+ # Terraform will write it to the same path as the state file with a
920
+ # +".backup"+ extension.
921
+ # @option parameters [String] :backup_out The path where Terraform should
922
+ # write the backup for the destination state; this can't be disabled; if
923
+ # not set, Terraform will write it to the same path as the destination
924
+ # state file with a +".backup"+ extension; this only needs to be specified
925
+ # if +:state_out+ is set to a different path than +:state+.
926
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
927
+ # file when locking is supported; when +false+, does not lock the state
928
+ # file.
929
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
930
+ # state lock.
931
+ # @option parameters [String] :state the path to the source state file;
932
+ # defaults to the configured backend, or +"terraform.tfstate"+.
933
+ # @option parameters [String] :state_out The path to the destination state
934
+ # file to write to; if this isn't specified, the source state file will be
935
+ # used; this can be a new or existing path.
936
+ # @option parameters [Boolean] :ignore_remote_version (false) Whether or not
937
+ # to continue even if remote and local Terraform versions are
938
+ # incompatible; this may result in an unusable workspace, and should be
939
+ # used with extreme caution.
940
+ #
941
+ # @example Basic Invocation
942
+ # RubyTerraform.state_move(
943
+ # source: 'packet_device.worker',
944
+ # destination: 'packet_device.helper')
945
+ #
946
+ def state_move(parameters = {})
947
+ exec(RubyTerraform::Commands::StateMove, parameters)
948
+ end
949
+ alias state_mv state_move
950
+
951
+ # Invokes the +terraform state pull+ command which pulls the state from its
952
+ # location, upgrades the local copy, and outputs it to stdout.
953
+ #
954
+ # This command "pulls" the current state and outputs it to stdout. As part
955
+ # of this process, Terraform will upgrade the state format of the local copy
956
+ # to the current version.
957
+ #
958
+ # The primary use of this is for state stored remotely. This command will
959
+ # still work with local state but is less useful for this.
960
+ #
961
+ # @param parameters The parameters used to invoke the command
962
+ # @option parameters [String] :chdir The path of a working directory to
963
+ # switch to before executing the given subcommand.
964
+ #
965
+ # @example Basic Invocation
966
+ # RubyTerraform.state_pull
967
+ #
968
+ def state_pull(parameters = {})
969
+ exec(RubyTerraform::Commands::StatePull, parameters)
970
+ end
971
+
972
+ # Invokes the +terraform state push+ command which updates remote state from
973
+ # a local state file.
974
+ #
975
+ # This command "pushes" a local state and overwrites remote state with a
976
+ # local state file. The command will protect you against writing
977
+ # an older serial or a different state file lineage unless you pass +true+
978
+ # for the +:force+ option.
979
+ #
980
+ # This command works with local state (it will overwrite the local state),
981
+ # but is less useful for this use case.
982
+ #
983
+ # If +:path+ is +"-"+, then this command will read the state to push from
984
+ # stdin. Data from stdin is not streamed to the backend: it is loaded
985
+ # completely (until pipe close), verified, and then pushed.
986
+ #
987
+ # @param parameters The parameters used to invoke the command
988
+ # @option parameters [String] :path The path to the state file to push; when
989
+ # passed +"-"+ will read state from standard input.
990
+ # @option parameters [String] :chdir The path of a working directory to
991
+ # switch to before executing the given subcommand.
992
+ # @option parameters [Boolean] :force (false) When +true+, writes the state
993
+ # even if lineages don't match or the remote serial is higher.
994
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
995
+ # file when locking is supported; when +false+, does not lock the state
996
+ # file.
997
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
998
+ # state lock.
999
+ # @option parameters [Boolean] :ignore_remote_version Whether or not to
1000
+ # continue even if remote and local Terraform versions are incompatible;
1001
+ # this may result in an unusable workspace, and should be used with
1002
+ # extreme caution.
1003
+ #
1004
+ # @example Basic Invocation
1005
+ # RubyTerraform.state_push(
1006
+ # path: 'some/statefile.tfstate')
1007
+ #
1008
+ def state_push(parameters = {})
1009
+ exec(RubyTerraform::Commands::StatePush, parameters)
1010
+ end
1011
+
1012
+ # Invokes the +terraform state rm+ command which removes one or more items
1013
+ # from the Terraform state, causing Terraform to "forget" those items
1014
+ # without first destroying them in the remote system.
1015
+ #
1016
+ # This command removes one or more resource instances from the Terraform
1017
+ # state based on the addresses given. You can view and list the available
1018
+ # instances with {#state_list}.
1019
+ #
1020
+ # If you give the address of an entire module then all of the instances in
1021
+ # that module and any of its child modules will be removed from the state.
1022
+ #
1023
+ # If you give the address of a resource that has "count" or "for_each" set,
1024
+ # all of the instances of that resource will be removed from the state.
1025
+ #
1026
+ # @param parameters The parameters used to invoke the command
1027
+ # @option parameters [String] :address The module address or absolute
1028
+ # resource address of the resource instance to remove; required unless
1029
+ # +:addresses+ is supplied; if both +:address+ and +:addresses+ are
1030
+ # provided, all addresses will be passed to Terraform.
1031
+ # @option parameters [Array<String>] :addresses An array of module addresses
1032
+ # or absolute resource addresses of the resource instances to remove;
1033
+ # required unless +:address+ is supplied; if both +:address+ and
1034
+ # +:addresses+ are provided, all addresses will be passed to Terraform.
1035
+ # @option parameters [String] :chdir The path of a working directory to
1036
+ # switch to before executing the given subcommand.
1037
+ # @option parameters [Boolean] :dry+run (false) When +true+, prints out what
1038
+ # would've been removed but doesn't actually remove anything.
1039
+ # @option parameters [String] :backup The path where Terraform should
1040
+ # write the backup state.
1041
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
1042
+ # file when locking is supported; when +false+, does not lock the state
1043
+ # file.
1044
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
1045
+ # state lock.
1046
+ # @option parameters [String] :state The path to the state file to update;
1047
+ # defaults to the current workspace state.
1048
+ # @option parameters [Boolean] :ignore_remote_version (false) Whether or not
1049
+ # to continue even if remote and local Terraform versions are
1050
+ # incompatible; this may result in an unusable workspace, and should be
1051
+ # used with extreme caution.
1052
+ #
1053
+ # @example Basic Invocation
1054
+ # RubyTerraform.state_remove(
1055
+ # address: 'packet_device.worker')
1056
+ #
1057
+ def state_remove(parameters = {})
1058
+ exec(RubyTerraform::Commands::StateRemove, parameters)
1059
+ end
1060
+ alias state_rm state_remove
1061
+
1062
+ # Invoke the +terraform state replace-provider+ command which replaces
1063
+ # provider for resources in the Terraform state.
1064
+ #
1065
+ # @param parameters The parameters used to invoke the command
1066
+ # @option parameters [String] :from The fully qualified name of the provider
1067
+ # to be replaced; required.
1068
+ # @option parameters [String] :to The fully qualified name of the provider
1069
+ # to replace with; required.
1070
+ # @option parameters [String] :chdir The path of a working directory to
1071
+ # switch to before executing the given subcommand.
1072
+ # @option parameters [Boolean] :auto_approve (false) If +true+, skips
1073
+ # interactive approval.
1074
+ # @option parameters [String] :backup The path where Terraform should write
1075
+ # the backup for the state file; this can't be disabled; if not set,
1076
+ # Terraform will write it to the same path as the state file with a
1077
+ # ".backup" extension.
1078
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
1079
+ # file when locking is supported; when +false+, does not lock the state
1080
+ # file.
1081
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
1082
+ # state lock.
1083
+ # @option parameters [String] :state The path to the state file to update;
1084
+ # defaults to the current workspace state.
1085
+ # @option parameters [Boolean] :ignore_remote_version (false) Whether or not
1086
+ # to continue even if remote and local Terraform versions are
1087
+ # incompatible; this may result in an unusable workspace, and should be
1088
+ # used with extreme caution.
1089
+ #
1090
+ # @example Basic Invocation
1091
+ # RubyTerraform.state_replace_provider(
1092
+ # from: 'hashicorp/aws',
1093
+ # to: 'registry.acme.corp/acme/aws')
1094
+ #
1095
+ def state_replace_provider(parameters = {})
1096
+ exec(RubyTerraform::Commands::StateReplaceProvider, parameters)
1097
+ end
1098
+
1099
+ # Invokes the +terraform state show+ command which shows the attributes of a
1100
+ # resource in the Terraform state.
1101
+ #
1102
+ # This command shows the attributes of a single resource in the Terraform
1103
+ # state. The +:address+ argument must be used to specify a single resource.
1104
+ # You can view the list of available resources with {#state_list}.
1105
+ #
1106
+ # @param parameters The parameters used to invoke the command
1107
+ # @option parameters [String] :address The module address or absolute
1108
+ # resource address of the resource instance to show; required.
1109
+ # @option parameters [String] :chdir The path of a working directory to
1110
+ # switch to before executing the given subcommand.
1111
+ #
1112
+ # @example Basic Invocation
1113
+ # RubyTerraform.state_show(
1114
+ # address: 'packet_device.worker')
1115
+ #
1116
+ def state_show(parameters = {})
1117
+ exec(RubyTerraform::Commands::StateShow, parameters)
1118
+ end
1119
+
1120
+ # Invokes the +terraform taint+ command which marks a resource instance as
1121
+ # not fully functional.
1122
+ #
1123
+ # Terraform uses the term "tainted" to describe a resource instance which
1124
+ # may not be fully functional, either because its creation partially failed
1125
+ # or because you've manually marked it as such using this command.
1126
+ #
1127
+ # This will not modify your infrastructure directly, but subsequent
1128
+ # Terraform plans will include actions to destroy the remote object and
1129
+ # create a new object to replace it.
1130
+ #
1131
+ # You can remove the "taint" state from a resource instance using the
1132
+ # {#untaint} command.
1133
+ #
1134
+ # The address is in the usual resource address syntax, such as:
1135
+ #
1136
+ # * +aws_instance.foo+
1137
+ # * <tt>aws_instance.bar[1]</tt>
1138
+ # * +module.foo.module.bar.aws_instance.baz+
1139
+ #
1140
+ # Use your shell's quoting or escaping syntax to ensure that the address
1141
+ # will reach Terraform correctly, without any special interpretation.
1142
+ #
1143
+ # @param parameters The parameters used to invoke the command
1144
+ # @option parameters [String] :address The module address or absolute
1145
+ # resource address of the resource instance to taint; required.
1146
+ # @option parameters [String] :chdir The path of a working directory to
1147
+ # switch to before executing the given subcommand.
1148
+ # @option parameters [Boolean] :allow_missing (false) If +true+, the command
1149
+ # will succeed (i.e., will not throw an
1150
+ # {RubyTerraform::Errors::ExecutionError}) even if the resource is
1151
+ # missing.
1152
+ # @option parameters [String] :backup The path to backup the existing state
1153
+ # file before modifying; defaults to the +:state_out+ path with
1154
+ # +".backup"+ extension; set +:no_backup+ to +true+ to skip backups
1155
+ # entirely.
1156
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
1157
+ # file when locking is supported; when +false+, does not lock the state
1158
+ # file.
1159
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
1160
+ # state lock.
1161
+ # @option parameters [Boolean] :no_backup (false) When +true+, no backup
1162
+ # file will be written.
1163
+ # @option parameters [String] :state The path to the state file from which
1164
+ # to read state and in which to store state (unless +:state_out+ is
1165
+ # specified); defaults to +"terraform.tfstate"+.
1166
+ # @option parameters [String] :state_out The path to write state to that is
1167
+ # different than +:state+; this can be used to preserve the old state.
1168
+ # @option parameters [Boolean] :ignore_remote_version (false) Whether or not
1169
+ # to continue even if remote and local Terraform versions are
1170
+ # incompatible; this may result in an unusable workspace, and should be
1171
+ # used with extreme caution.
1172
+ #
1173
+ # @example Basic Invocation
1174
+ # RubyTerraform.taint(
1175
+ # address: 'aws_security_group.allow_all')
1176
+ #
1177
+ def taint(parameters = {})
1178
+ exec(RubyTerraform::Commands::Taint, parameters)
729
1179
  end
730
1180
 
731
- def workspace(parameters = {}) # rubocop:disable Metrics/MethodLength
1181
+ # Invokes the +terraform untaint+ command which removes the 'tainted' state
1182
+ # from a resource instance.
1183
+ #
1184
+ # Terraform uses the term "tainted" to describe a resource instance
1185
+ # which may not be fully functional, either because its creation partially
1186
+ # failed or because you've manually marked it as such using the {#taint}
1187
+ # command.
1188
+ #
1189
+ # This command removes that state from a resource instance, causing
1190
+ # Terraform to see it as fully-functional and not in need of replacement.
1191
+ #
1192
+ # This will not modify your infrastructure directly. It only avoids
1193
+ # Terraform planning to replace a tainted instance in a future operation.
1194
+ #
1195
+ # @param parameters The parameters used to invoke the command
1196
+ # @option parameters [String] :name The name of the resource instance to
1197
+ # untaint; required.
1198
+ # @option parameters [String] :chdir The path of a working directory to
1199
+ # switch to before executing the given subcommand.
1200
+ # @option parameters [Boolean] :allow_missing (false) If +true+, the command
1201
+ # will succeed (i.e., will not throw an
1202
+ # {RubyTerraform::Errors::ExecutionError}) even if the resource is
1203
+ # missing.
1204
+ # @option parameters [String] :backup The path to backup the existing state
1205
+ # file before modifying; defaults to the +:state_out+ path with
1206
+ # +".backup"+ extension; set +:no_backup+ to +true+ to skip backups
1207
+ # entirely.
1208
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
1209
+ # file when locking is supported; when +false+, does not lock the state
1210
+ # file.
1211
+ # @option parameters [String] :lock_timeout The duration to retry a state
1212
+ # lock; defaults to +"0s"+.
1213
+ # @option parameters [Boolean] :no_backup (false) When +true+, no backup
1214
+ # file will be written.
1215
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
1216
+ # from the command should be in color.
1217
+ # @option parameters [String] :state The path to the state file from which
1218
+ # to read state and in which to store state (unless +:state_out+ is
1219
+ # specified); defaults to +"terraform.tfstate"+.
1220
+ # @option parameters [String] :state_out The path to write state to that is
1221
+ # different than +:state+; this can be used to preserve the old state.
1222
+ # @option parameters [Boolean] :ignore_remote_version (false) Whether or not
1223
+ # to continue even if remote and local Terraform versions are
1224
+ # incompatible; this may result in an unusable workspace, and should be
1225
+ # used with extreme caution.
1226
+ #
1227
+ # @example Basic Invocation
1228
+ # RubyTerraform.untaint(
1229
+ # name: 'aws_security_group.allow_all')
1230
+ #
1231
+ def untaint(parameters = {})
1232
+ exec(RubyTerraform::Commands::Untaint, parameters)
1233
+ end
1234
+
1235
+ # Invokes the +terraform validate+ command which checks whether a
1236
+ # configuration is valid.
1237
+ #
1238
+ # Validates the configuration files in a directory, referring only to the
1239
+ # configuration and not accessing any remote services such as remote state,
1240
+ # provider APIs, etc.
1241
+ #
1242
+ # Validate runs checks that verify whether a configuration is syntactically
1243
+ # valid and internally consistent, regardless of any provided variables or
1244
+ # existing state. It is thus primarily useful for general verification of
1245
+ # reusable modules, including correctness of attribute names and value
1246
+ # types.
1247
+ #
1248
+ # It is safe to run this command automatically, for example as a post-save
1249
+ # check in a text editor or as a test step for a re-usable module in a CI
1250
+ # system.
1251
+ #
1252
+ # Validation requires an initialized working directory with any referenced
1253
+ # plugins and modules installed. To initialize a working directory for
1254
+ # validation without accessing any configured remote backend, use the
1255
+ # {#init} command passing +:backend+ as +false+.
1256
+ #
1257
+ # To verify configuration in the context of a particular run (a particular
1258
+ # target workspace, input variable values, etc), use the {#plan} command
1259
+ # instead, which includes an implied validation check.
1260
+ #
1261
+ # @param parameters The parameters used to invoke the command
1262
+ # @option parameters [String] :directory The path to a directory containing
1263
+ # terraform configuration (deprecated in terraform 0.14, removed in
1264
+ # terraform 0.15, use +:chdir+ instead).
1265
+ # @option parameters [String] :chdir The path of a working directory to
1266
+ # switch to before executing the given subcommand.
1267
+ # @option parameters [Boolean] :json (false) Whether or not to produce
1268
+ # output in a machine-readable JSON format, suitable for use in text
1269
+ # editor integrations and other automated systems; always disables color.
1270
+ # @option parameters [Boolean] :no_color (false) Whether or not the output
1271
+ # from the command should be in color.
1272
+ #
1273
+ # @example Basic Invocation
1274
+ # RubyTerraform.validate(
1275
+ # directory: 'infra/networking')
1276
+ #
1277
+ def validate(parameters = {})
1278
+ exec(RubyTerraform::Commands::Validate, parameters)
1279
+ end
1280
+
1281
+ # Invokes the +terraform workspace delete+ command which deletes a
1282
+ # workspace.
1283
+ #
1284
+ # @param parameters The parameters used to invoke the command
1285
+ # @option parameters [String] :name The name of the workspace to delete;
1286
+ # required.
1287
+ # @option parameters [String] :directory The path to a directory containing
1288
+ # terraform configuration (deprecated in terraform 0.14, removed in
1289
+ # terraform 0.15, use +:chdir+ instead).
1290
+ # @option parameters [String] :chdir The path of a working directory to
1291
+ # switch to before executing the given subcommand.
1292
+ # @option parameters [Boolean] :force (false) Whether or not to remove a
1293
+ # non-empty workspace; defaults to +false+.
1294
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
1295
+ # file when locking is supported; when +false+, does not lock the state
1296
+ # file.
1297
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
1298
+ # state lock.
1299
+ #
1300
+ # @example Basic Invocation
1301
+ # RubyTerraform.workspace_delete(
1302
+ # name: 'example')
1303
+ #
1304
+ def workspace_delete(parameters = {})
1305
+ exec(RubyTerraform::Commands::WorkspaceDelete, parameters)
1306
+ end
1307
+
1308
+ # Invokes the +terraform workspace list+ command which lists workspaces.
1309
+ #
1310
+ # @param parameters The parameters used to invoke the command
1311
+ # @option parameters [String] :directory The path to a directory containing
1312
+ # terraform configuration (deprecated in terraform 0.14, removed in
1313
+ # terraform 0.15, use +:chdir+ instead).
1314
+ # @option parameters [String] :chdir the path of a working directory to
1315
+ # switch to before executing the given subcommand.
1316
+ #
1317
+ # @example Basic Invocation
1318
+ # RubyTerraform.workspace_list(
1319
+ # directory: 'infra/networking')
1320
+ #
1321
+ def workspace_list(parameters = {})
1322
+ exec(RubyTerraform::Commands::WorkspaceList, parameters)
1323
+ end
1324
+
1325
+ # Invokes the +terraform workspace new+ command which creates a new
1326
+ # workspace.
1327
+ #
1328
+ # @param parameters The parameters used to invoke the command
1329
+ # @option parameters [String] :name The name of the workspace to create;
1330
+ # required.
1331
+ # @option parameters [String] :directory The path to a directory containing
1332
+ # terraform configuration (deprecated in terraform 0.14, removed in
1333
+ # terraform 0.15, use +:chdir+ instead).
1334
+ # @option parameters [String] :chdir The path of a working directory to
1335
+ # switch to before executing the given subcommand.
1336
+ # @option parameters [Boolean] :lock (true) When +true+, locks the state
1337
+ # file when locking is supported; when +false+, does not lock the state
1338
+ # file.
1339
+ # @option parameters [String] :lock_timeout ("0s") The duration to retry a
1340
+ # state lock.
1341
+ # @option parameters [String] :state The path to a state file to copy into
1342
+ # the new workspace.
1343
+ #
1344
+ # @example Basic Invocation
1345
+ # RubyTerraform.workspace_new(
1346
+ # name: 'example')
1347
+ #
1348
+ def workspace_new(parameters = {})
1349
+ exec(RubyTerraform::Commands::WorkspaceNew, parameters)
1350
+ end
1351
+
1352
+ # Invokes the +terraform workspace select+ command which selects a
1353
+ # workspace.
1354
+ #
1355
+ # @param parameters The parameters used to invoke the command
1356
+ # @option parameters [String] :name The name of the workspace to select;
1357
+ # required.
1358
+ # @option parameters [String] :directory The path to a directory containing
1359
+ # terraform configuration (deprecated in terraform 0.14, removed in
1360
+ # terraform 0.15, use +:chdir+ instead).
1361
+ # @option parameters [String] :chdir The path of a working directory to
1362
+ # switch to before executing the given subcommand.
1363
+ #
1364
+ # @example BasicInvocation
1365
+ # RubyTerraform.workspace_select(
1366
+ # name: 'example')
1367
+ #
1368
+ def workspace_select(parameters = {})
1369
+ exec(RubyTerraform::Commands::WorkspaceSelect, parameters)
1370
+ end
1371
+
1372
+ # Invokes the +terraform workspace show+ command which shows the name of the
1373
+ # current workspace.
1374
+ #
1375
+ # @param parameters The parameters used to invoke the command
1376
+ # @option parameters [String] :chdir The path of a working directory to
1377
+ # switch to before executing the given subcommand.
1378
+ #
1379
+ # @example Basic Invocation
1380
+ # RubyTerraform.workspace_show
1381
+ #
1382
+ def workspace_show(parameters = {})
1383
+ exec(RubyTerraform::Commands::WorkspaceShow, parameters)
1384
+ end
1385
+
1386
+ # rubocop:disable Metrics/MethodLength
1387
+
1388
+ def workspace(parameters = {})
732
1389
  case parameters[:operation]
733
1390
  when nil, 'list'
734
1391
  exec(RubyTerraform::Commands::WorkspaceList, parameters)
@@ -747,12 +1404,17 @@ module RubyTerraform
747
1404
  end
748
1405
  end
749
1406
 
1407
+ # rubocop:enable Metrics/MethodLength
1408
+
750
1409
  private
751
1410
 
752
1411
  def exec(command_class, parameters)
753
1412
  command_class.new.execute(parameters)
754
1413
  end
755
1414
  end
1415
+
1416
+ # rubocop:enable Metrics/ModuleLength
1417
+
756
1418
  extend ClassMethods
757
1419
 
758
1420
  def self.included(other)