class RubyTerraform::Commands::Base
Attributes
binary[R]
logger[R]
stderr[R]
stdin[R]
stdout[R]
Public Class Methods
new(**opts)
click to toggle source
Constructs an instance of the command.
# File lib/ruby_terraform/commands/base.rb, line 14 def initialize(**opts) @binary = opts[:binary] || RubyTerraform.configuration.binary @logger = opts[:logger] || RubyTerraform.configuration.logger @options = opts[:options] || RubyTerraform.configuration.options @stdin = opts[:stdin] || RubyTerraform.configuration.stdin @stdout = opts[:stdout] || RubyTerraform.configuration.stdout @stderr = opts[:stderr] || RubyTerraform.configuration.stderr end
Public Instance Methods
execute(parameters = {})
click to toggle source
Executes the command instance.
@param [Hash<String, Object>] parameters The parameters used to
invoke the command. See subclass documentation for details of supported options.
# File lib/ruby_terraform/commands/base.rb, line 30 def execute(parameters = {}) do_before(parameters) build_and_execute_command(parameters) do_after(parameters) rescue Open4::SpawnError message = "Failed while running '#{command_name}'." logger.error(message) raise Errors::ExecutionError, message end
Protected Instance Methods
build_and_execute_command(parameters)
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 44 def build_and_execute_command(parameters) command = build_command(parameters) logger.debug("Running '#{command}'.") command.execute( stdin: stdin, stdout: stdout, stderr: stderr ) end
command_name()
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 55 def command_name self.class.to_s.split('::')[-1].downcase end
do_after(_parameters)
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 61 def do_after(_parameters); end
do_before(_parameters)
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 59 def do_before(_parameters); end
Private Instance Methods
arguments(_parameters)
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 99 def arguments(_parameters) [] end
build_command(parameters)
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 65 def build_command(parameters) parameters = resolve_parameters(parameters) Lino::CommandLineBuilder .for_command(@binary) .with_options_after_subcommands .with_option_separator('=') .with_appliables(@options.resolve(options, parameters)) .with_subcommands(subcommands) .with_arguments(arguments(parameters).compact.flatten).build end
options()
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 95 def options [] end
parameter_defaults(_parameters)
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 83 def parameter_defaults(_parameters) {} end
parameter_overrides(_parameters)
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 87 def parameter_overrides(_parameters) {} end
resolve_parameters(parameters)
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 77 def resolve_parameters(parameters) parameter_defaults(parameters) .merge(parameters) .merge(parameter_overrides(parameters)) end
subcommands()
click to toggle source
# File lib/ruby_terraform/commands/base.rb, line 91 def subcommands [] end