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 22 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 10 def initialize(logger, command, ) .(:stdin, :interactive, :valid_exit_statuses, :env) [:valid_exit_statuses] ||= [0] [:env] ||= {} @logger = logger @command = command @stdin = [:stdin] @interactive = [:interactive] @options = @valid_exit_statuses = [:valid_exit_statuses] @env = [:env] 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
52 53 54 55 56 57 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 52 def execution_error raise Error::ExecutionError.new(@command, exit_status, @stdin, @interactive ? nil : @output) end |
#exit_status ⇒ Object
43 44 45 46 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 43 def exit_status raise 'Command not yet executed' unless defined? @exit_status @exit_status end |
#interactive? ⇒ Boolean
34 35 36 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 34 def interactive? @interactive end |
#output ⇒ Object
38 39 40 41 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 38 def output raise 'Command not yet executed' unless defined? @output @output end |
#run ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 24 def run logger&.debug("Running command #{@command} with stdin #{@stdin.inspect}") if @interactive run_interactively else run_non_interactively end logger&.debug("output of the command:\n #{output}") end |
#success? ⇒ Boolean
48 49 50 |
# File 'lib/foreman_maintain/utils/command_runner.rb', line 48 def success? @valid_exit_statuses.include? exit_status end |