Merge pull request #9540 from reitermarkus/unversioned-pkgs
Fix parsing version from `PackageInfo` files.
This commit is contained in:
commit
b0a3b60292
@ -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
|
||||||
|
@ -169,6 +169,7 @@ DEPENDENCIES
|
|||||||
codecov
|
codecov
|
||||||
concurrent-ruby
|
concurrent-ruby
|
||||||
mechanize
|
mechanize
|
||||||
|
nokogiri
|
||||||
parallel_tests
|
parallel_tests
|
||||||
patchelf
|
patchelf
|
||||||
plist
|
plist
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user