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 when a system command fails.
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.
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 907 908 909 910 911 912 913 914 915 916 917 |
# File 'exceptions.rb', line 860 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.
838 839 840 |
# File 'exceptions.rb', line 838 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.
841 842 843 |
# File 'exceptions.rb', line 841 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.
850 851 852 |
# File 'exceptions.rb', line 850 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.
844 845 846 |
# File 'exceptions.rb', line 844 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.
847 848 849 |
# File 'exceptions.rb', line 847 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.
920 921 922 |
# File 'exceptions.rb', line 920 def stderr Array(output).select { |type,| type == :stderr }.map(&:last).join end |