Merge pull request #13690 from carlocab/python-path-shebang

language/python: support `python3` from PATH in `#detected_python_shebang`
This commit is contained in:
Carlo Cabrera 2022-08-16 02:02:56 +08:00 committed by GitHub
commit 5047d4249e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 9 deletions

View File

@ -103,16 +103,22 @@ module Language
)
end
def detected_python_shebang(formula = self)
python_deps = formula.deps.map(&:name).grep(/^python(@.*)?$/)
def detected_python_shebang(formula = self, use_python_from_path: false)
python_path = if use_python_from_path
"/usr/bin/env python3"
else
python_deps = formula.deps.map(&:name).grep(/^python(@.*)?$/)
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")
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_dep = python_deps.first
Formula[python_dep].opt_bin/python_dep.sub("@", "")
end
python_dep = python_deps.first
python_shebang_rewrite_info(Formula[python_dep].opt_bin/python_dep.sub("@", ""))
python_shebang_rewrite_info(python_path)
end
end

View File

@ -21,7 +21,7 @@ describe Language::Python::Shebang do
before do
file.write <<~EOS
#!/usr/bin/env python3
#!/usr/bin/python2
a
b
c
@ -34,7 +34,7 @@ describe Language::Python::Shebang do
describe "#detected_python_shebang" do
it "can be used to replace Python shebangs" do
expect(Formulary).to receive(:factory).with(python_f.name).and_return(python_f)
Utils::Shebang.rewrite_shebang described_class.detected_python_shebang(f), file
Utils::Shebang.rewrite_shebang described_class.detected_python_shebang(f, use_python_from_path: false), file
expect(File.read(file)).to eq <<~EOS
#!#{HOMEBREW_PREFIX}/opt/python@3.11/bin/python3.11
@ -43,5 +43,16 @@ describe Language::Python::Shebang do
c
EOS
end
it "can be pointed to a `python3` in PATH" do
Utils::Shebang.rewrite_shebang described_class.detected_python_shebang(f, use_python_from_path: true), file
expect(File.read(file)).to eq <<~EOS
#!/usr/bin/env python3
a
b
c
EOS
end
end
end