Class: SystemCommand::Result Private

Inherits:
Object
  • Object
show all
Includes:
Context, Utils::Output::Mixin
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 Utils::Output::Mixin

#issue_reporting_message, #odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_once, #opoo_outside_github_actions, #opoo_without_github_actions_annotation, #pretty_cannot_install, #pretty_deprecated, #pretty_disabled, #pretty_duration, #pretty_install_status, #pretty_installed, #pretty_uninstalled, #pretty_unmarked, #pretty_upgradable, #pretty_warning

Methods included from Context

current, current=, #debug?, #deferred_environment_expansion?, #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:



656
657
658
659
660
661
662
# File 'system_command.rb', line 656

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

Instance Attribute Details

#command ⇒ Array<String>

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:



640
641
642
# File 'system_command.rb', line 640

def command
  @command
end

#exit_status ⇒ Integer?

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:



646
647
648
# File 'system_command.rb', line 646

def exit_status
  @exit_status
end

#status ⇒ 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:

  • (Process::Status)


643
644
645
# File 'system_command.rb', line 643

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.



665
666
667
668
669
# File 'system_command.rb', line 665

def assert_success!
  return if @status.success?

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

#merged_output ⇒ String

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:



686
687
688
# File 'system_command.rb', line 686

def merged_output
  @merged_output ||= T.let(@output.map { |_, line| line }.join, T.nilable(String))
end

#plist ⇒ T.untyped

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:

  • (T.untyped)


704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
# File 'system_command.rb', line 704

def plist
  require "plist"
  @plist ||= T.let(begin
    output = stdout

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

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

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

#stderr ⇒ String

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:



679
680
681
682
683
# File 'system_command.rb', line 679

def stderr
  @stderr ||= T.let(@output.select { |type,| type == :stderr }
                           .map { |_, line| line }
                           .join, T.nilable(String))
end

#stdout ⇒ String

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:



672
673
674
675
676
# File 'system_command.rb', line 672

def stdout
  @stdout ||= T.let(@output.select { |type,| type == :stdout }
                           .map { |_, line| line }
                           .join, T.nilable(String))
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)


691
692
693
694
695
# File 'system_command.rb', line 691

def success?
  return false if @exit_status.nil?

  @exit_status.zero?
end

#to_ary ⇒ Array<(String, String, Process::Status)> Also known as: to_a

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:



698
699
700
# File 'system_command.rb', line 698

def to_ary
  [stdout, stderr, status]
end