Add custom implementations for brew_wrapper and no_force_brew_wrapper?

This commit is contained in:
Carlo Cabrera 2025-08-13 17:17:52 +08:00 committed by Carlo Cabrera
parent b7d8072575
commit b2d14aff4d
No known key found for this signature in database
GPG Key ID: C74D447FC549A1D0

View File

@ -89,8 +89,8 @@ module Homebrew
}, },
HOMEBREW_BREW_WRAPPER: { HOMEBREW_BREW_WRAPPER: {
description: "If set, use wrapper to call `brew` rather than auto-detecting it.", description: "If set, use wrapper to call `brew` rather than auto-detecting it.",
# TODO: uncomment line below and remove the line above when odeprecated.
# We use backticks to render "Deprecated:" in bold. # We use backticks to render "Deprecated:" in bold.
# TODO: uncomment line below and remove the line above when odeprecated.
# description: "`Deprecated:` If set, use wrapper to call `brew` rather than auto-detecting it.", # description: "`Deprecated:` If set, use wrapper to call `brew` rather than auto-detecting it.",
}, },
HOMEBREW_BROWSER: { HOMEBREW_BROWSER: {
@ -398,8 +398,8 @@ module Homebrew
}, },
HOMEBREW_NO_FORCE_BREW_WRAPPER: { HOMEBREW_NO_FORCE_BREW_WRAPPER: {
description: "If set, disables `$HOMEBREW_FORCE_BREW_WRAPPER` behaviour, even if set.", description: "If set, disables `$HOMEBREW_FORCE_BREW_WRAPPER` behaviour, even if set.",
# TODO: uncomment line below and remove the line above when odeprecated.
# We use backticks to render "Deprecated:" in bold. # We use backticks to render "Deprecated:" in bold.
# TODO: uncomment line below and remove the line above when odeprecated.
# description: "`Deprecated:` If set, disables `$HOMEBREW_FORCE_BREW_WRAPPER` behaviour, even if set.", # description: "`Deprecated:` If set, disables `$HOMEBREW_FORCE_BREW_WRAPPER` behaviour, even if set.",
boolean: true, boolean: true,
}, },
@ -556,10 +556,23 @@ module Homebrew
end end
CUSTOM_IMPLEMENTATIONS = T.let(Set.new([ CUSTOM_IMPLEMENTATIONS = T.let(Set.new([
:HOMEBREW_BREW_WRAPPER,
:HOMEBREW_MAKE_JOBS, :HOMEBREW_MAKE_JOBS,
:HOMEBREW_NO_FORCE_BREW_WRAPPER,
:HOMEBREW_CASK_OPTS, :HOMEBREW_CASK_OPTS,
]).freeze, T::Set[Symbol]) ]).freeze, T::Set[Symbol])
FALSY_VALUES = T.let(%w[false no off nil 0].freeze, T::Array[String])
sig { params(env: String, env_value: T.nilable(String)).void }
def check_falsy_values(env, env_value)
return unless FALSY_VALUES.include?(env_value&.downcase)
odisabled "#{env}=#{env_value}", <<~EOS.chomp
#{env}=1 to enable and #{env}= (an empty value) to disable
EOS
end
ENVS.each do |env, hash| ENVS.each do |env, hash|
# Needs a custom implementation. # Needs a custom implementation.
next if CUSTOM_IMPLEMENTATIONS.include?(env) next if CUSTOM_IMPLEMENTATIONS.include?(env)
@ -571,16 +584,10 @@ module Homebrew
define_method(method_name) do define_method(method_name) do
env_value = ENV.fetch(env, nil) env_value = ENV.fetch(env, nil)
# odeprecated "`HOMEBREW_NO_FORCE_BREW_WRAPPER`" if env == "HOMEBREW_NO_FORCE_BREW_WRAPPER" check_falsy_values(env, env_value)
falsy_values = %w[false no off nil 0]
if falsy_values.include?(env_value&.downcase)
odisabled "#{env}=#{env_value}", <<~EOS.chomp
#{env}=1 to enable and #{env}= (an empty value) to disable
EOS
end
# TODO: Uncomment the remaining part of the line below after the deprecation/disable cycle. # TODO: Uncomment the remaining part of the line below after `check_falsy_values` has been removed.
env_value.present? # && !falsy_values.include(env_value.downcase) env_value.present? # && !FALSY_VALUES.include?(env_value.downcase)
end end
elsif hash[:default].present? elsif hash[:default].present?
define_method(method_name) do define_method(method_name) do
@ -588,14 +595,30 @@ module Homebrew
end end
else else
define_method(method_name) do define_method(method_name) do
# odeprecated "`HOMEBREW_BREW_WRAPPER`" if env == "HOMEBREW_BREW_WRAPPER"
ENV[env].presence ENV[env].presence
end end
end end
end end
# Needs a custom implementation. # Needs a custom implementation.
sig { returns(T::Boolean) }
def no_force_brew_wrapper?
# odeprecated "`HOMEBREW_NO_FORCE_BREW_WRAPPER`"
env = "HOMEBREW_NO_FORCE_BREW_WRAPPER"
env_value = ENV.fetch(env, nil)
check_falsy_values(env, env_value)
# TODO: Uncomment the remaining part of the line below after `check_falsy_values` has been removed.
env_value.present? # && !FALSY_VALUES.include?(env_value.downcase)
end
sig { returns(T.nilable(String)) }
def brew_wrapper
# odeprecated "`HOMEBREW_BREW_WRAPPER`"
ENV["HOMEBREW_BREW_WRAPPER"].presence
end
sig { returns(String) } sig { returns(String) }
def make_jobs def make_jobs
jobs = ENV["HOMEBREW_MAKE_JOBS"].to_i jobs = ENV["HOMEBREW_MAKE_JOBS"].to_i