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.
848 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 |
# File 'exceptions.rb', line 848 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.
826 827 828 |
# File 'exceptions.rb', line 826 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.
829 830 831 |
# File 'exceptions.rb', line 829 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.
838 839 840 |
# File 'exceptions.rb', line 838 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.
832 833 834 |
# File 'exceptions.rb', line 832 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.
835 836 837 |
# File 'exceptions.rb', line 835 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.
908 909 910 |
# File 'exceptions.rb', line 908 def stderr Array(output).select { |type,| type == :stderr }.map(&:last).join end |