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
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Formula
|
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
|
undef shared_library
|
||||||
|
|
||||||
def shared_library(name, version = nil)
|
def shared_library(name, version = nil)
|
||||||
@ -12,6 +20,8 @@ class Formula
|
|||||||
undef on_linux
|
undef on_linux
|
||||||
|
|
||||||
def on_linux(&_block)
|
def on_linux(&_block)
|
||||||
|
raise "No block content defined for on_linux block" unless block_given?
|
||||||
|
|
||||||
yield
|
yield
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -2,10 +2,20 @@
|
|||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class Formula
|
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
|
class << self
|
||||||
undef on_macos
|
undef on_macos
|
||||||
|
|
||||||
def on_macos(&_block)
|
def on_macos(&_block)
|
||||||
|
raise "No block content defined for on_macos block" unless block_given?
|
||||||
|
|
||||||
yield
|
yield
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1366,6 +1366,22 @@ class Formula
|
|||||||
"#<Formula #{name} (#{active_spec_sym}) #{path}>"
|
"#<Formula #{name} (#{active_spec_sym}) #{path}>"
|
||||||
end
|
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.
|
# Standard parameters for cargo builds.
|
||||||
def std_cargo_args
|
def std_cargo_args
|
||||||
["--locked", "--root", prefix, "--path", "."]
|
["--locked", "--root", prefix, "--path", "."]
|
||||||
@ -2512,13 +2528,17 @@ class Formula
|
|||||||
# <pre>on_macos do
|
# <pre>on_macos do
|
||||||
# depends_on "mac_only_dep"
|
# depends_on "mac_only_dep"
|
||||||
# end</pre>
|
# 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.
|
# Block only executed on Linux. No-op on macOS.
|
||||||
# <pre>on_linux do
|
# <pre>on_linux do
|
||||||
# depends_on "linux_only_dep"
|
# depends_on "linux_only_dep"
|
||||||
# end</pre>
|
# 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
|
# @!attribute [w] option
|
||||||
# Options can be used as arguments to `brew install`.
|
# 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"))
|
expect(f.any_installed_version).to eq(PkgVersion.parse("1.0_1"))
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user