in lib/gdk/shellout.rb [30:64]
def execute(display_output: true, display_error: true, retry_attempts: DEFAULT_EXECUTE_RETRY_ATTEMPTS, retry_delay_secs: DEFAULT_EXECUTE_RETRY_DELAY_SECS)
retried ||= false
GDK::Output.debug("command=[#{command}], opts=[#{opts}], display_output=[#{display_output}], retry_attempts=[#{retry_attempts}]")
duration = Benchmark.realtime do
display_output ? stream : try_run
end
GDK::Output.debug("result: success?=[#{success?}], stdout=[#{read_stdout}], stderr=[#{read_stderr}], duration=[#{duration.round(2)} seconds]")
raise ExecuteCommandFailedError, command unless success?
if retried
retry_success_message = "'#{command}' succeeded after retry."
GDK::Output.success(retry_success_message)
end
self
rescue StreamCommandFailedError, ExecuteCommandFailedError => e
error_message = "'#{command}' failed."
if (retry_attempts -= 1).negative?
GDK::Output.error(error_message, e) if display_error
self
else
retried = true
error_message += " Retrying in #{retry_delay_secs} secs.."
GDK::Output.error(error_message, e) if display_error
sleep(retry_delay_secs)
retry
end
end