Merge pull request #9540 from reitermarkus/unversioned-pkgs

Fix parsing version from `PackageInfo` files.
This commit is contained in:
Markus Reiter 2020-12-14 18:13:49 +01:00 committed by GitHub
commit b0a3b60292
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 3 deletions

View File

@ -5,6 +5,7 @@ source "https://rubygems.org"
# installed gems (should all be require: false) # installed gems (should all be require: false)
gem "byebug", require: false gem "byebug", require: false
gem "codecov", require: false gem "codecov", require: false
gem "nokogiri", require: false
gem "parallel_tests", require: false gem "parallel_tests", require: false
gem "ronn", require: false gem "ronn", require: false
gem "rspec", require: false gem "rspec", require: false

View File

@ -169,6 +169,7 @@ DEPENDENCIES
codecov codecov
concurrent-ruby concurrent-ruby
mechanize mechanize
nokogiri
parallel_tests parallel_tests
patchelf patchelf
plist plist

View File

@ -57,10 +57,19 @@ module Homebrew
sig { params(package_info_path: Pathname).returns(T.nilable(String)) } sig { params(package_info_path: Pathname).returns(T.nilable(String)) }
def self.version_from_package_info(package_info_path) def self.version_from_package_info(package_info_path)
contents = package_info_path.read Homebrew.install_bundler_gems!
require "nokogiri"
short_version = contents[/CFBundleShortVersionString="([^"]*)"/, 1].presence xml = Nokogiri::XML(package_info_path.read)
version = contents[/CFBundleVersion="([^"]*)"/, 1].presence
bundle_id = xml.xpath("//pkg-info//bundle-version//bundle").first&.attr("id")
return unless bundle_id
bundle = xml.xpath("//pkg-info//bundle").find { |b| b["id"] == bundle_id }
return unless bundle
short_version = bundle["CFBundleShortVersionString"]
version = bundle["CFBundleVersion"]
return decide_between_versions(short_version, version) if short_version && version return decide_between_versions(short_version, version) if short_version && version
end end