language/python: use rewrite_shebang, add detected_python_shebang
This commit is contained in:
parent
878bb0e983
commit
5d68856350
@ -88,13 +88,29 @@ module Language
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.rewrite_python_shebang(python_path)
|
def self.rewrite_python_shebang(python_path)
|
||||||
regex = %r{^#! ?/usr/bin/(env )?python([23](\.\d{1,2})?)?$}
|
Pathname.pwd.find { |f| Utils::Shebang.rewrite_shebang(Shebang.python_shebang_rewrite_info(python_path), f) }
|
||||||
maximum_regex_length = 28 # the length of "#! /usr/bin/env pythonx.yyy$"
|
end
|
||||||
Pathname(".").find do |f|
|
|
||||||
next unless f.file?
|
|
||||||
next unless regex.match?(f.read(maximum_regex_length))
|
|
||||||
|
|
||||||
Utils::Inreplace.inreplace f.to_s, regex, "#!#{python_path}"
|
# Mixin module for {Formula} adding shebang rewrite features.
|
||||||
|
module Shebang
|
||||||
|
module_function
|
||||||
|
|
||||||
|
# @private
|
||||||
|
def python_shebang_rewrite_info(python_path)
|
||||||
|
Utils::Shebang::RewriteInfo.new(
|
||||||
|
%r{^#! ?/usr/bin/(env )?python([23](\.\d{1,2})?)?$},
|
||||||
|
28, # the length of "#! /usr/bin/env pythonx.yyy$"
|
||||||
|
python_path,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
python_shebang_rewrite_info(Formula[python_deps.first].opt_bin/"python3")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user