Mike McQuaid 6b5213286c
Rename "exact" tag match to "no_older_versions"
This is more specific about the behaviour we want to have in future.
2021-04-09 09:36:18 +01:00

52 lines
1.2 KiB
Ruby

# typed: true
# frozen_string_literal: true
module Utils
module Bottles
class << self
undef tag
def tag
Utils::Bottles::Tag.new(system: MacOS.version.to_sym, arch: Hardware::CPU.arch)
end
end
class Collector
private
alias generic_find_matching_tag find_matching_tag
def find_matching_tag(tag, no_older_versions: false)
# Used primarily by developers testing beta macOS releases.
if no_older_versions ||
(OS::Mac.prerelease? && Homebrew::EnvConfig.developer? && Homebrew::EnvConfig.skip_or_later_bottles?)
generic_find_matching_tag(tag)
else
generic_find_matching_tag(tag) ||
find_older_compatible_tag(tag)
end
end
# Find a bottle built for a previous version of macOS.
def find_older_compatible_tag(tag)
tag_version = begin
tag.to_macos_version
rescue MacOSVersionError
nil
end
return if tag_version.blank?
keys.find do |key|
key_tag = Tag.from_symbol(key)
next if key_tag.arch != tag.arch
key_tag.to_macos_version <= tag_version
rescue MacOSVersionError
false
end
end
end
end
end