Class: SystemCommand::Result Private

Inherits:
Object
  • Object
show all
Includes:
Context
Defined in:
system_command.rb

Overview

This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.

Result containing the output and exit status of a finished sub-process.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Context

current, current=, #debug?, #quiet?, #verbose?, #with_context

Constructor Details

#initialize(command, output, status, secrets:) ⇒ void

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Parameters:



340
341
342
343
344
345
346
# File 'system_command.rb', line 340

def initialize(command, output, status, secrets:)
  @command       = command
  @output        = output
  @status        = status
  @exit_status   = status.exitstatus
  @secrets       = secrets
end

Instance Attribute Details

#commandObject

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



330
331
332
# File 'system_command.rb', line 330

def command
  @command
end

#exit_statusObject

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



330
331
332
# File 'system_command.rb', line 330

def exit_status
  @exit_status
end

#statusObject

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.



330
331
332
# File 'system_command.rb', line 330

def status
  @status
end

Instance Method Details

#assert_success!void

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

This method returns an undefined value.



349
350
351
352
353
# File 'system_command.rb', line 349

def assert_success!
  return if @status.success?

  raise ErrorDuringExecution.new(command, status: @status, output: @output, secrets: @secrets)
end

#merged_outputString

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



370
371
372
373
# File 'system_command.rb', line 370

def merged_output
  @merged_output ||= @output.map { |_, line| line }
                            .join
end

#plistArray, ...

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
# File 'system_command.rb', line 388

def plist
  @plist ||= begin
    output = stdout

    output = output.sub(/\A(.*?)(\s*<\?\s*xml)/m) do
      warn_plist_garbage(T.must(Regexp.last_match(1)))
      Regexp.last_match(2)
    end

    output = output.sub(%r{(<\s*/\s*plist\s*>\s*)(.*?)\Z}m) do
      warn_plist_garbage(T.must(Regexp.last_match(2)))
      Regexp.last_match(1)
    end

    Plist.parse_xml(output, marshal: false)
  end
end

#stderrString

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



363
364
365
366
367
# File 'system_command.rb', line 363

def stderr
  @stderr ||= @output.select { |type,| type == :stderr }
                     .map { |_, line| line }
                     .join
end

#stdoutString

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



356
357
358
359
360
# File 'system_command.rb', line 356

def stdout
  @stdout ||= @output.select { |type,| type == :stdout }
                     .map { |_, line| line }
                     .join
end

#success?Boolean

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:

  • (Boolean)


376
377
378
379
380
# File 'system_command.rb', line 376

def success?
  return false if @exit_status.nil?

  @exit_status.zero?
end

#to_aryArray(String, String, Process::Status)

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



383
384
385
# File 'system_command.rb', line 383

def to_ary
  [stdout, stderr, status]
end