Exception: ErrorDuringExecution Private
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.
Raised by Kernel#safe_system in utils.rb.
Instance Attribute Summary collapse
- #cmd ⇒ Array<Pathname, String, Array<String>, Hash{String => String, nil}, nil> readonly private
- #exitstatus ⇒ Integer? readonly private
- #output ⇒ Array<Array<([String, Symbol], String)>>? readonly private
- #status ⇒ Integer, ... readonly private
- #termsig ⇒ Integer? readonly private
Instance Method Summary collapse
- #initialize(cmd, status:, output: nil, secrets: []) ⇒ void constructor private
- #stderr ⇒ String private
Constructor Details
#initialize(cmd, status:, output: nil, 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.
849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 |
# File 'exceptions.rb', line 849 def initialize(cmd, status:, output: nil, secrets: []) @cmd = cmd @status = status @output = output @exitstatus = T.let( case status when Integer status when Hash status["exitstatus"] else status.exitstatus end, T.nilable(Integer), ) @termsig = T.let( case status when Integer nil when Hash status["termsig"] else status.termsig end, T.nilable(Integer), ) redacted_cmd = Formatter.redact_secrets(cmd.shelljoin.gsub('\=', "="), secrets) reason = if exitstatus "exited with #{exitstatus}" elsif (t = termsig) "was terminated by uncaught signal #{Signal.signame(t)}" else raise ArgumentError, "Status neither has `exitstatus` nor `termsig`." end s = "Failure while executing; `#{redacted_cmd}` #{reason}." if Array(output).present? format_output_line = lambda do |type_line| type, line = *type_line if type == :stderr Formatter.error(line) else line end end s << " Here's the output:\n" s << Array(output).map(&format_output_line).join s << "\n" unless s.end_with?("\n") end super s.freeze end |
Instance Attribute Details
#cmd ⇒ Array<Pathname, String, Array<String>, Hash{String => String, nil}, nil> (readonly)
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.
827 828 829 |
# File 'exceptions.rb', line 827 def cmd @cmd end |
#exitstatus ⇒ Integer? (readonly)
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.
830 831 832 |
# File 'exceptions.rb', line 830 def exitstatus @exitstatus end |
#output ⇒ Array<Array<([String, Symbol], String)>>? (readonly)
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.
839 840 841 |
# File 'exceptions.rb', line 839 def output @output end |
#status ⇒ Integer, ... (readonly)
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.
833 834 835 |
# File 'exceptions.rb', line 833 def status @status end |
#termsig ⇒ Integer? (readonly)
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.
836 837 838 |
# File 'exceptions.rb', line 836 def termsig @termsig end |
Instance Method Details
#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.
909 910 911 |
# File 'exceptions.rb', line 909 def stderr Array(output).select { |type,| type == :stderr }.map(&:last).join end |