From 728bb547a7b56e3771e9534c5a7302c76f8dfbe2 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Thu, 29 Apr 2021 17:48:09 +0100 Subject: [PATCH] language: raise ShebangDetectionError rather than a generic error --- Library/Homebrew/exceptions.rb | 7 +++++++ Library/Homebrew/language/perl.rb | 2 +- Library/Homebrew/language/python.rb | 6 ++++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb index cadf8a5313..06e58d3962 100644 --- a/Library/Homebrew/exceptions.rb +++ b/Library/Homebrew/exceptions.rb @@ -729,3 +729,10 @@ class MacOSVersionError < RuntimeError super "unknown or unsupported macOS version: #{version.inspect}" end end + +# Raised when `detected_perl_shebang` etc cannot detect the shebang. +class ShebangDetectionError < RuntimeError + def initialize(type, reason) + super "Cannot detect #{type} shebang: #{reason}." + end +end diff --git a/Library/Homebrew/language/perl.rb b/Library/Homebrew/language/perl.rb index 3714b71407..a83379373c 100644 --- a/Library/Homebrew/language/perl.rb +++ b/Library/Homebrew/language/perl.rb @@ -16,7 +16,7 @@ module Language elsif formula.deps.map(&:name).include? "perl" Formula["perl"].opt_bin/"perl" else - raise "Cannot detect Perl shebang: formula does not depend on Perl." + raise ShebangDetectionError.new("Perl", "formula does not depend on Perl") end Utils::Shebang::RewriteInfo.new( diff --git a/Library/Homebrew/language/python.rb b/Library/Homebrew/language/python.rb index 7ba9fbd731..c6a0cb0a63 100644 --- a/Library/Homebrew/language/python.rb +++ b/Library/Homebrew/language/python.rb @@ -105,8 +105,10 @@ module Language def detected_python_shebang(formula = self) python_deps = formula.deps.map(&:name).grep(/^python(@.*)?$/) - raise "Cannot detect Python shebang: formula does not depend on Python." if python_deps.empty? - raise "Cannot detect Python shebang: formula has multiple Python dependencies." if python_deps.length > 1 + raise ShebangDetectionError.new("Python", "formula does not depend on Python") if python_deps.empty? + if python_deps.length > 1 + raise ShebangDetectionError.new("Python", "formula has multiple Python dependencies") + end python_shebang_rewrite_info(Formula[python_deps.first].opt_bin/"python3") end