resource: allow on_os blocks

This commit is contained in:
Michka Popoff 2020-06-06 12:31:13 +02:00
parent 342b957824
commit 1f8ebf5d20
7 changed files with 79 additions and 2 deletions

View File

@ -0,0 +1,9 @@
# frozen_string_literal: true
class Resource
undef on_linux
def on_linux(&_block)
yield
end
end

View File

@ -0,0 +1,9 @@
# frozen_string_literal: true
class Resource
undef on_macos
def on_macos(&_block)
yield
end
end

View 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

View File

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

View File

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

View File

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

View File

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