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 # 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

View File

@ -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

View File

@ -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`.

View File

@ -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