2021-09-11 01:00:23 +01:00
|
|
|
# typed: strict
|
2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2018-06-05 23:19:18 -04:00
|
|
|
module Homebrew
|
|
|
|
module Fetch
|
2023-05-09 18:07:32 +08:00
|
|
|
sig {
|
|
|
|
params(
|
|
|
|
formula: Formula,
|
|
|
|
force_bottle: T::Boolean,
|
|
|
|
bottle_tag: T.nilable(Symbol),
|
|
|
|
build_from_source_formulae: T::Array[String],
|
2023-04-14 15:33:40 +02:00
|
|
|
os: T.nilable(Symbol),
|
|
|
|
arch: T.nilable(Symbol),
|
2023-05-09 18:07:32 +08:00
|
|
|
).returns(T::Boolean)
|
|
|
|
}
|
2023-04-14 15:33:40 +02:00
|
|
|
def fetch_bottle?(formula, force_bottle:, bottle_tag:, build_from_source_formulae:, os:, arch:)
|
2023-03-10 23:46:07 +00:00
|
|
|
bottle = formula.bottle
|
2020-11-29 22:36:54 +01:00
|
|
|
|
2023-05-09 18:07:32 +08:00
|
|
|
return true if force_bottle && bottle.present?
|
2023-05-05 07:34:19 +02:00
|
|
|
if os.present?
|
|
|
|
return true
|
|
|
|
elsif ENV["HOMEBREW_TEST_GENERIC_OS"].present?
|
2024-04-30 11:10:23 +02:00
|
|
|
# `:generic` bottles don't exist and `--os` flag is not specified.
|
2023-05-05 07:34:19 +02:00
|
|
|
return false
|
|
|
|
end
|
2023-04-14 15:33:40 +02:00
|
|
|
return true if arch.present?
|
2023-05-09 18:07:32 +08:00
|
|
|
return true if bottle_tag.present? && formula.bottled?(bottle_tag)
|
2018-09-17 02:45:00 +02:00
|
|
|
|
2021-01-07 13:49:05 -08:00
|
|
|
bottle.present? &&
|
2023-03-10 23:46:07 +00:00
|
|
|
formula.pour_bottle? &&
|
2023-05-09 18:07:32 +08:00
|
|
|
build_from_source_formulae.exclude?(formula.full_name) &&
|
2021-01-07 13:49:05 -08:00
|
|
|
bottle.compatible_locations?
|
2018-06-05 23:19:18 -04:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|