Class: SystemCall::Command
- Inherits:
-
Object
- Object
- SystemCall::Command
- Defined in:
- lib/system_call/command.rb
Overview
A class responsible for communication with command line interfaces.
Instance Attribute Summary collapse
- #args ⇒ Array readonly
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Result
-
#initialize(*args) ⇒ Command
constructor
Initializes a Command.
Constructor Details
#initialize(*args) ⇒ Command
Initializes a SystemCall::Command.
18 19 20 |
# File 'lib/system_call/command.rb', line 18 def initialize(*args) @args = args.flatten end |
Instance Attribute Details
#args ⇒ Array (readonly)
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/system_call/command.rb', line 11 class Command attr_reader :args ## # Initializes a {Command}. # # @param args [Array] The command line arguments. def initialize(*args) @args = args.flatten end ## # Initializes and calls a {Command}, then returns the {Result}. # # @param args [Array] The command line arguments. # @return [Result] def self.call(*args) new(*args).call end ## # Invokes the {Command} and returns the {Result}. # # @return [Result] def call Open3.popen3(*args) do |_, stdout, stderr, wait_thr| success_result = readlines(stdout) error_result = readlines(stderr) exit_status = wait_thr.value Result.new(exit_status, success_result, error_result) end end private def readlines(io) io.readlines.join.chomp end end |
Class Method Details
.call(*args) ⇒ Result
Initializes and calls a SystemCall::Command, then returns the Result.
27 28 29 |
# File 'lib/system_call/command.rb', line 27 def self.call(*args) new(*args).call end |
Instance Method Details
#call ⇒ Result
Invokes the SystemCall::Command and returns the Result.
35 36 37 38 39 40 41 42 |
# File 'lib/system_call/command.rb', line 35 def call Open3.popen3(*args) do |_, stdout, stderr, wait_thr| success_result = readlines(stdout) error_result = readlines(stderr) exit_status = wait_thr.value Result.new(exit_status, success_result, error_result) end end |