resource: allow on_os blocks
This commit is contained in:
parent
342b957824
commit
1f8ebf5d20
9
Library/Homebrew/extend/os/linux/resource.rb
Normal file
9
Library/Homebrew/extend/os/linux/resource.rb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Resource
|
||||||
|
undef on_linux
|
||||||
|
|
||||||
|
def on_linux(&_block)
|
||||||
|
yield
|
||||||
|
end
|
||||||
|
end
|
9
Library/Homebrew/extend/os/mac/resource.rb
Normal file
9
Library/Homebrew/extend/os/mac/resource.rb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Resource
|
||||||
|
undef on_macos
|
||||||
|
|
||||||
|
def on_macos(&_block)
|
||||||
|
yield
|
||||||
|
end
|
||||||
|
end
|
7
Library/Homebrew/extend/os/resource.rb
Normal file
7
Library/Homebrew/extend/os/resource.rb
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
if OS.mac?
|
||||||
|
require "extend/os/mac/resource"
|
||||||
|
elsif OS.linux?
|
||||||
|
require "extend/os/linux/resource"
|
||||||
|
end
|
@ -2474,13 +2474,13 @@ class Formula
|
|||||||
specs.each { |spec| spec.uses_from_macos(dep, bounds) }
|
specs.each { |spec| spec.uses_from_macos(dep, bounds) }
|
||||||
end
|
end
|
||||||
|
|
||||||
# Block executed only executed on macOS. No-op on Linux.
|
# Block only executed on macOS. No-op on Linux.
|
||||||
# <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); end
|
||||||
|
|
||||||
# Block executed 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>
|
||||||
|
@ -178,6 +178,18 @@ class Resource
|
|||||||
patches << p
|
patches << p
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Block only executed on macOS. No-op on Linux.
|
||||||
|
# <pre>on_macos do
|
||||||
|
# url "mac_only_url"
|
||||||
|
# end</pre>
|
||||||
|
def on_macos(&_block); end
|
||||||
|
|
||||||
|
# Block only executed on Linux. No-op on macOS.
|
||||||
|
# <pre>on_linux do
|
||||||
|
# url "linux_only_url"
|
||||||
|
# end</pre>
|
||||||
|
def on_linux(&_block); end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
|
|
||||||
def mktemp(prefix)
|
def mktemp(prefix)
|
||||||
@ -252,3 +264,5 @@ class ResourceStageContext
|
|||||||
"<#{self.class}: resource=#{resource} staging=#{staging}>"
|
"<#{self.class}: resource=#{resource} staging=#{staging}>"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
require "extend/os/resource"
|
||||||
|
@ -110,4 +110,23 @@ describe Formula do
|
|||||||
expect(f.patchlist.second.url).to eq("patch_linux")
|
expect(f.patchlist.second.url).to eq("patch_linux")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#on_linux" do
|
||||||
|
it "uses on_linux within a resource block" do
|
||||||
|
f = formula do
|
||||||
|
homepage "https://brew.sh"
|
||||||
|
|
||||||
|
url "https://brew.sh/test-0.1.tbz"
|
||||||
|
sha256 TEST_SHA256
|
||||||
|
|
||||||
|
resource "test_resource" do
|
||||||
|
on_linux do
|
||||||
|
url "on_linux"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
expect(f.resources.length).to eq(1)
|
||||||
|
expect(f.resources.first.url).to eq("on_linux")
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -117,4 +117,23 @@ describe Formula do
|
|||||||
expect(f.patchlist.second.url).to eq("patch_macos")
|
expect(f.patchlist.second.url).to eq("patch_macos")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#on_macos" do
|
||||||
|
it "uses on_macos within a resource block" do
|
||||||
|
f = formula do
|
||||||
|
homepage "https://brew.sh"
|
||||||
|
|
||||||
|
url "https://brew.sh/test-0.1.tbz"
|
||||||
|
sha256 TEST_SHA256
|
||||||
|
|
||||||
|
resource "test_resource" do
|
||||||
|
on_macos do
|
||||||
|
url "resource_macos"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
expect(f.resources.length).to eq(1)
|
||||||
|
expect(f.resources.first.url).to eq("resource_macos")
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user