Class: Bsdkrun::Result

Inherits:
Data
  • Object
show all
Defined in:
lib/bsdkrun/types.rb

Overview

The captured result of running a command in a guest via Sandbox#exec.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#commandString (readonly)

Returns a human label for the command.

Returns:

  • (String)

    a human label for the command.



346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
# File 'lib/bsdkrun/types.rb', line 346

Result = Data.define(:stdout, :stderr, :exit_code, :command) do
  # @return [Boolean] whether the command succeeded (exit 0).
  def ok?
    exit_code.zero?
  end

  # @return [String] stdout with trailing newlines trimmed — the common case.
  def text
    stdout.sub(/\n+\z/, "")
  end

  # @return [Object] stdout parsed as JSON.
  def json
    require "json"
    JSON.parse(stdout)
  end

  # @return [Array<String>] non-empty stdout lines.
  def lines
    stdout.split("\n").reject(&:empty?)
  end

  # @raise [CommandFailed] if the command exited non-zero.
  # @return [self]
  def throw_if_failed!
    unless ok?
      raise CommandFailed.new(
        exit_code: exit_code, stdout: stdout, stderr: stderr, command: command
      )
    end
    self
  end
end

#exit_codeInteger (readonly)

Returns:

  • (Integer)


346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
# File 'lib/bsdkrun/types.rb', line 346

Result = Data.define(:stdout, :stderr, :exit_code, :command) do
  # @return [Boolean] whether the command succeeded (exit 0).
  def ok?
    exit_code.zero?
  end

  # @return [String] stdout with trailing newlines trimmed — the common case.
  def text
    stdout.sub(/\n+\z/, "")
  end

  # @return [Object] stdout parsed as JSON.
  def json
    require "json"
    JSON.parse(stdout)
  end

  # @return [Array<String>] non-empty stdout lines.
  def lines
    stdout.split("\n").reject(&:empty?)
  end

  # @raise [CommandFailed] if the command exited non-zero.
  # @return [self]
  def throw_if_failed!
    unless ok?
      raise CommandFailed.new(
        exit_code: exit_code, stdout: stdout, stderr: stderr, command: command
      )
    end
    self
  end
end

#stderrString (readonly)

Returns:

  • (String)


346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
# File 'lib/bsdkrun/types.rb', line 346

Result = Data.define(:stdout, :stderr, :exit_code, :command) do
  # @return [Boolean] whether the command succeeded (exit 0).
  def ok?
    exit_code.zero?
  end

  # @return [String] stdout with trailing newlines trimmed — the common case.
  def text
    stdout.sub(/\n+\z/, "")
  end

  # @return [Object] stdout parsed as JSON.
  def json
    require "json"
    JSON.parse(stdout)
  end

  # @return [Array<String>] non-empty stdout lines.
  def lines
    stdout.split("\n").reject(&:empty?)
  end

  # @raise [CommandFailed] if the command exited non-zero.
  # @return [self]
  def throw_if_failed!
    unless ok?
      raise CommandFailed.new(
        exit_code: exit_code, stdout: stdout, stderr: stderr, command: command
      )
    end
    self
  end
end

#stdoutString (readonly)

Returns:

  • (String)


346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
# File 'lib/bsdkrun/types.rb', line 346

Result = Data.define(:stdout, :stderr, :exit_code, :command) do
  # @return [Boolean] whether the command succeeded (exit 0).
  def ok?
    exit_code.zero?
  end

  # @return [String] stdout with trailing newlines trimmed — the common case.
  def text
    stdout.sub(/\n+\z/, "")
  end

  # @return [Object] stdout parsed as JSON.
  def json
    require "json"
    JSON.parse(stdout)
  end

  # @return [Array<String>] non-empty stdout lines.
  def lines
    stdout.split("\n").reject(&:empty?)
  end

  # @raise [CommandFailed] if the command exited non-zero.
  # @return [self]
  def throw_if_failed!
    unless ok?
      raise CommandFailed.new(
        exit_code: exit_code, stdout: stdout, stderr: stderr, command: command
      )
    end
    self
  end
end

Instance Method Details

#jsonObject

Returns stdout parsed as JSON.

Returns:

  • (Object)

    stdout parsed as JSON.



358
359
360
361
# File 'lib/bsdkrun/types.rb', line 358

def json
  require "json"
  JSON.parse(stdout)
end

#linesArray<String>

Returns non-empty stdout lines.

Returns:

  • (Array<String>)

    non-empty stdout lines.



364
365
366
# File 'lib/bsdkrun/types.rb', line 364

def lines
  stdout.split("\n").reject(&:empty?)
end

#ok?Boolean

Returns whether the command succeeded (exit 0).

Returns:

  • (Boolean)

    whether the command succeeded (exit 0).



348
349
350
# File 'lib/bsdkrun/types.rb', line 348

def ok?
  exit_code.zero?
end

#textString

Returns stdout with trailing newlines trimmed — the common case.

Returns:

  • (String)

    stdout with trailing newlines trimmed — the common case.



353
354
355
# File 'lib/bsdkrun/types.rb', line 353

def text
  stdout.sub(/\n+\z/, "")
end

#throw_if_failed!self

Returns:

  • (self)

Raises:



370
371
372
373
374
375
376
377
# File 'lib/bsdkrun/types.rb', line 370

def throw_if_failed!
  unless ok?
    raise CommandFailed.new(
      exit_code: exit_code, stdout: stdout, stderr: stderr, command: command
    )
  end
  self
end