formula: add preset pour_bottle? symbols
This commit is contained in:
parent
d45832bbfc
commit
5e9fcafbd8
@ -2918,8 +2918,34 @@ class Formula
|
|||||||
#
|
#
|
||||||
# If `satisfy` returns `false` then a bottle will not be used and instead
|
# If `satisfy` returns `false` then a bottle will not be used and instead
|
||||||
# the {Formula} will be built from source and `reason` will be printed.
|
# the {Formula} will be built from source and `reason` will be printed.
|
||||||
def pour_bottle?(&block)
|
#
|
||||||
|
# Alternatively, a preset reason can be passed as a symbol:
|
||||||
|
# <pre>pour_bottle? :default_prefix_required</pre>
|
||||||
|
# <pre>pour_bottle? :clt_required</pre>
|
||||||
|
def pour_bottle?(requirement = nil, &block)
|
||||||
@pour_bottle_check = PourBottleCheck.new(self)
|
@pour_bottle_check = PourBottleCheck.new(self)
|
||||||
|
|
||||||
|
block ||= case requirement
|
||||||
|
when :default_prefix_required
|
||||||
|
lambda do |_|
|
||||||
|
T.cast(self, PourBottleCheck).reason(+<<~EOS)
|
||||||
|
The bottle needs to be installed into #{Homebrew::DEFAULT_PREFIX}.
|
||||||
|
EOS
|
||||||
|
T.cast(self, PourBottleCheck).satisfy { HOMEBREW_PREFIX.to_s == Homebrew::DEFAULT_PREFIX }
|
||||||
|
end
|
||||||
|
when :clt_required
|
||||||
|
lambda do |_|
|
||||||
|
on_macos do
|
||||||
|
T.cast(self, PourBottleCheck).reason(+<<~EOS)
|
||||||
|
The bottle needs the Apple Command Line Tools to be installed.
|
||||||
|
You can install them, if desired, with:
|
||||||
|
xcode-select --install
|
||||||
|
EOS
|
||||||
|
T.cast(self, PourBottleCheck).satisfy { MacOS::CLT.installed? }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
@pour_bottle_check.instance_eval(&block)
|
@pour_bottle_check.instance_eval(&block)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -995,6 +995,31 @@ describe Formula do
|
|||||||
|
|
||||||
expect(f).to pour_bottle
|
expect(f).to pour_bottle
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "returns false when set with a symbol" do
|
||||||
|
f = formula "foo" do
|
||||||
|
url "foo-1.0"
|
||||||
|
|
||||||
|
pour_bottle? :default_prefix_required
|
||||||
|
end
|
||||||
|
|
||||||
|
# Homebrew::DEFAULT_PREFIX is still /usr/local or /opt/homebrew
|
||||||
|
# and HOMEBREW_PREFIX is a temporary test directory
|
||||||
|
expect(f).not_to pour_bottle
|
||||||
|
end
|
||||||
|
|
||||||
|
it "returns true when set with a symbol" do
|
||||||
|
# Ensure that prefix matches the default
|
||||||
|
stub_const "Homebrew::DEFAULT_PREFIX", HOMEBREW_PREFIX.to_s
|
||||||
|
|
||||||
|
f = formula "foo" do
|
||||||
|
url "foo-1.0"
|
||||||
|
|
||||||
|
pour_bottle? :default_prefix_required
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(f).to pour_bottle
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "alias changes" do
|
describe "alias changes" do
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user