Class: ForemanMaintain::Utils::CommandRunner
- Inherits:
-
Object
- Object
- ForemanMaintain::Utils::CommandRunner
- Defined in:
- lib/foreman_maintain/utils/command_runner.rb
Overview
Wrapper around running a command
Instance Attribute Summary collapse
-
#command ⇒ Object
readonly
Returns the value of attribute command.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Instance Method Summary collapse
- #execution_error ⇒ Object
- #exit_status ⇒ Object
-
#initialize(logger, command, options) ⇒ CommandRunner
constructor
A new instance of CommandRunner.
- #interactive? ⇒ Boolean
- #output ⇒ Object
- #run ⇒ Object
- #success? ⇒ Boolean
Constructor Details
#initialize(logger, command, options) ⇒ CommandRunner
Returns a new instance of CommandRunner.
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 10 def initialize(logger, command, ) .(:stdin, :hidden_patterns, :interactive, :valid_exit_statuses) [:valid_exit_statuses] ||= [0] @logger = logger @command = command @stdin = [:stdin] @hidden_patterns = Array([:hidden_patterns]).compact @interactive = [:interactive] @options = @valid_exit_statuses = [:valid_exit_statuses] raise ArgumentError, 'Can not pass stdin for interactive command' if @interactive && @stdin end |
Instance Attribute Details
#command ⇒ Object (readonly)
Returns the value of attribute command.
8 9 10 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 8 def command @command end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
8 9 10 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 8 def logger @logger end |
Instance Method Details
#execution_error ⇒ Object
51 52 53 54 55 56 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 51 def execution_error raise Error::ExecutionError.new(hide_strings(@command), exit_status, hide_strings(@stdin), @interactive ? nil : hide_strings(@output)) end |
#exit_status ⇒ Object
42 43 44 45 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 42 def exit_status raise 'Command not yet executed' unless defined? @exit_status @exit_status end |
#interactive? ⇒ Boolean
33 34 35 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 33 def interactive? @interactive end |
#output ⇒ Object
37 38 39 40 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 37 def output raise 'Command not yet executed' unless defined? @output @output end |
#run ⇒ Object
23 24 25 26 27 28 29 30 31 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 23 def run logger&.debug(hide_strings("Running command #{@command} with stdin #{@stdin.inspect}")) if @interactive run_interactively else run_non_interactively end logger&.debug("output of the command:\n #{hide_strings(output)}") end |
#success? ⇒ Boolean
47 48 49 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 47 def success? @valid_exit_statuses.include? exit_status end |