Sha256: eb355e75d21623694b235d50daafee4bc26a5fcd0b74bd12200ede73cf25dc32

Contents?: true

Size: 1.57 KB

Versions: 1

Compression:

Stored size: 1.57 KB

Contents

require 'nrser/refinements'

class Cmds
  # a simple data structure returned from calling {Cmds#capture} 
  # on a {Cmd} instance.
  # 
  # it contains the exit status code, standard output and standard error,
  # as well as the actual string command issued (after all substitutions).
  #
  # instances also have a few convenience methods.
  #
  # @!attribute [r] cmd
  #   @return [String] the command string that was executed.
  #
  # @!attribute [r] status
  #   @return [Fixnum] the command process' exit status code.
  #
  # @!attribute [r] out
  #   @return [String] the command process' standard output.
  #
  # @!attribute [r] err
  #   @return [String] the command process' standard error.
  #
  class Result
    attr_reader :cmd, :status, :out, :err
    
    # @param cmd [String] {#cmd} attribute.
    # @param status [Fixnum] {#status} attribute.
    # @param out [String] {#out} attribute.
    # @param err [String] {#err} attribute.
    def initialize cmd, status, out, err
      @cmd = cmd
      @status = status
      @out = out
      @err = err
    end
    
    # @return [Boolean] true if {#status} is `0`.
    def ok?
      @status == 0
    end
    
    # @return [Boolean] true if {#status} is not `0`.
    def error?
      ! ok?
    end
    
    # raises an error if the command failed (exited with a {#status} other 
    # than `0`).
    #
    # @return [Result] it's self (so that it can be chained).
    #
    # @raise [SystemCallError] if the command failed.
    #
    def assert
      Cmds.check_status @cmd, @status, @err
      self
    end # raise_error
  end # Result
end # Cmds

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cmds-0.2.1 lib/cmds/result.rb