formula: add on_linux and on_macos blocks
for install and others
This commit is contained in:
parent
6a2331b7e0
commit
8b85ef2e88
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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`.
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user