formula: add on_linux and on_macos blocks

for install and others
This commit is contained in:
Michka Popoff 2020-10-12 22:50:48 +02:00
parent 6a2331b7e0
commit 8b85ef2e88
4 changed files with 88 additions and 2 deletions

View File

@ -2,6 +2,14 @@
# frozen_string_literal: true
class Formula
undef on_linux
def on_linux(&_block)
raise "No block content defined for on_linux block" unless block_given?
yield
end
undef shared_library
def shared_library(name, version = nil)
@ -12,6 +20,8 @@ class Formula
undef on_linux
def on_linux(&_block)
raise "No block content defined for on_linux block" unless block_given?
yield
end

View File

@ -2,10 +2,20 @@
# frozen_string_literal: true
class Formula
undef on_macos
def on_macos(&_block)
raise "No block content defined for on_macos block" unless block_given?
yield
end
class << self
undef on_macos
def on_macos(&_block)
raise "No block content defined for on_macos block" unless block_given?
yield
end
end

View File

@ -1366,6 +1366,22 @@ class Formula
"#<Formula #{name} (#{active_spec_sym}) #{path}>"
end
# Block only executed on macOS. No-op on Linux.
# <pre>on_macos do
# Do something mac specific
# end</pre>
def on_macos(&_block)
raise "No block content defined for on_macos block" unless block_given?
end
# Block only executed on Linux. No-op on macOS.
# <pre>on_linux do
# Do something linux specific
# end</pre>
def on_linux(&_block)
raise "No block content defined for on_linux block" unless block_given?
end
# Standard parameters for cargo builds.
def std_cargo_args
["--locked", "--root", prefix, "--path", "."]
@ -2512,13 +2528,17 @@ class Formula
# <pre>on_macos do
# depends_on "mac_only_dep"
# end</pre>
def on_macos(&_block); end
def on_macos(&_block)
raise "No block content defined for on_macos block" unless block_given?
end
# Block only executed on Linux. No-op on macOS.
# <pre>on_linux do
# depends_on "linux_only_dep"
# end</pre>
def on_linux(&_block); end
def on_linux(&_block)
raise "No block content defined for on_linux block" unless block_given?
end
# @!attribute [w] option
# Options can be used as arguments to `brew install`.

View File

@ -1363,4 +1363,50 @@ describe Formula do
expect(f.any_installed_version).to eq(PkgVersion.parse("1.0_1"))
end
end
describe "#on_macos", :needs_macos do
let(:f) do
Class.new(Testball) do
@test = 0
attr_reader :test
def install
on_macos do
@test = 1
end
on_linux do
@test = 2
end
end
end.new
end
it "only calls code within on_macos" do
f.brew { f.install }
expect(f.test).to eq(1)
end
end
describe "#on_linux", :needs_linux do
let(:f) do
Class.new(Testball) do
@test = 0
attr_reader :test
def install
on_macos do
@test = 1
end
on_linux do
@test = 2
end
end
end.new
end
it "only calls code within on_linux" do
f.brew { f.install }
expect(f.test).to eq(2)
end
end
end