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_removed, #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:



646
647
648
649
650
651
652
# File 'system_command.rb', line 646

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:



630
631
632
# File 'system_command.rb', line 630

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:



636
637
638
# File 'system_command.rb', line 636

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)


633
634
635
# File 'system_command.rb', line 633

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.



655
656
657
658
659
# File 'system_command.rb', line 655

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:



676
677
678
# File 'system_command.rb', line 676

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)


694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
# File 'system_command.rb', line 694

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:



669
670
671
672
673
# File 'system_command.rb', line 669

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:



662
663
664
665
666
# File 'system_command.rb', line 662

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)


681
682
683
684
685
# File 'system_command.rb', line 681

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:



688
689
690
# File 'system_command.rb', line 688

def to_ary
  [stdout, stderr, status]
end