From 020ce249eeb96efc992d5aea44705645fbfbdcff Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Thu, 30 Jul 2020 18:56:00 -0400 Subject: [PATCH 1/2] bump-formula-pr: handle pypi url version changes --- Library/Homebrew/dev-cmd/bump-formula-pr.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index 0e8144dee6..b62b7652e2 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -183,6 +183,11 @@ module Homebrew elsif !new_url && !new_version odie "#{formula}: no --url= or --version= argument specified!" else + new_url ||= if old_url.start_with?(PyPI::PYTHONHOSTED_URL_PREFIX) + package_name = File.basename(old_url).match(/^(.+)-[a-z\d.]+$/)[1] + _, url = PyPI.get_pypi_info(package_name, new_version) + url + end new_url ||= old_url.gsub(old_version, new_version) if new_url == old_url odie <<~EOS From ec7be559f43b160083a688375651e3e943308018 Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Fri, 31 Jul 2020 10:10:07 -0400 Subject: [PATCH 2/2] Refactor package name and url logic to PyPI module --- Library/Homebrew/dev-cmd/bump-formula-pr.rb | 6 +----- Library/Homebrew/utils/pypi.rb | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index b62b7652e2..6affcf1246 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -183,11 +183,7 @@ module Homebrew elsif !new_url && !new_version odie "#{formula}: no --url= or --version= argument specified!" else - new_url ||= if old_url.start_with?(PyPI::PYTHONHOSTED_URL_PREFIX) - package_name = File.basename(old_url).match(/^(.+)-[a-z\d.]+$/)[1] - _, url = PyPI.get_pypi_info(package_name, new_version) - url - end + new_url ||= PyPI.update_pypi_url(old_url, new_version) new_url ||= old_url.gsub(old_version, new_version) if new_url == old_url odie <<~EOS diff --git a/Library/Homebrew/utils/pypi.rb b/Library/Homebrew/utils/pypi.rb index 486462be19..a3947533ad 100644 --- a/Library/Homebrew/utils/pypi.rb +++ b/Library/Homebrew/utils/pypi.rb @@ -7,6 +7,20 @@ module PyPI @pipgrip_installed = nil + def url_to_pypi_package_name(url) + return unless url.start_with? PYTHONHOSTED_URL_PREFIX + + File.basename(url).match(/^(.+)-[a-z\d.]+$/)[1] + end + + def update_pypi_url(url, version) + package = url_to_pypi_package_name url + return if package.nil? + + _, url = get_pypi_info(package, version) + url + end + # Get name, url, and version for a given pypi package def get_pypi_info(package, version) metadata_url = "https://pypi.org/pypi/#{package}/#{version}/json" @@ -32,7 +46,7 @@ module PyPI # PyPI package name isn't always the same as the formula name. Try to infer from the URL. pypi_name = if formula.stable.url.start_with?(PYTHONHOSTED_URL_PREFIX) - File.basename(formula.stable.url).match(/^(.+)-[a-z\d.]+$/)[1] + url_to_pypi_package_name formula.stable.url else formula.name end