2016-04-25 17:57:51 +01:00
|
|
|
module Utils
|
|
|
|
class Bottles
|
|
|
|
class << self
|
2018-04-07 20:28:56 +01:00
|
|
|
undef tag
|
|
|
|
|
2016-04-25 17:57:51 +01:00
|
|
|
def tag
|
|
|
|
if MacOS.version >= :lion
|
|
|
|
MacOS.cat
|
|
|
|
elsif MacOS.version == :snow_leopard
|
|
|
|
Hardware::CPU.is_64_bit? ? :snow_leopard : :snow_leopard_32
|
|
|
|
else
|
2019-01-08 19:13:46 +00:00
|
|
|
"#{MacOS.cat}_64".to_sym
|
2016-04-25 17:57:51 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class Collector
|
|
|
|
private
|
|
|
|
|
2018-04-07 20:28:56 +01:00
|
|
|
alias generic_find_matching_tag find_matching_tag
|
|
|
|
|
2016-04-25 17:57:51 +01:00
|
|
|
def find_matching_tag(tag)
|
2018-10-12 22:04:47 +01:00
|
|
|
generic_find_matching_tag(tag) ||
|
|
|
|
find_older_compatible_tag(tag)
|
2016-04-25 17:57:51 +01:00
|
|
|
end
|
|
|
|
|
2018-10-24 11:54:56 +01:00
|
|
|
def tag_without_or_later(tag)
|
|
|
|
tag
|
|
|
|
end
|
|
|
|
|
2018-10-12 22:04:47 +01:00
|
|
|
# Find a bottle built for a previous version of macOS.
|
|
|
|
def find_older_compatible_tag(tag)
|
2016-04-25 17:57:51 +01:00
|
|
|
begin
|
|
|
|
tag_version = MacOS::Version.from_symbol(tag)
|
|
|
|
rescue ArgumentError
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
keys.find do |key|
|
2018-10-24 11:54:56 +01:00
|
|
|
key_tag_version = tag_without_or_later(key)
|
|
|
|
begin
|
|
|
|
MacOS::Version.from_symbol(key_tag_version) <= tag_version
|
|
|
|
rescue ArgumentError
|
|
|
|
false
|
2016-04-25 17:57:51 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|