Merge pull request #13491 from Rylan12/include-on-system

`OnSystem`: provide `::MacOSAndLinux` and `::MacOSOnly`
This commit is contained in:
Rylan Polster 2022-06-30 20:10:12 -04:00 committed by GitHub
commit aade3bcc6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 7 deletions

View File

@ -92,7 +92,7 @@ module Cask
]).freeze
extend Predicable
include OnSystem
include OnSystem::MacOSOnly
attr_reader :cask, :token

View File

@ -56,7 +56,7 @@ module OnSystem
end
sig { params(base: Class).void }
def self.included(base)
def setup_arch_methods(base)
ARCH_OPTIONS.each do |arch|
base.define_method("on_#{arch}") do |&block|
@on_system_blocks_exist = true
@ -70,7 +70,10 @@ module OnSystem
result
end
end
end
sig { params(base: Class).void }
def setup_base_os_methods(base)
BASE_OS_OPTIONS.each do |base_os|
base.define_method("on_#{base_os}") do |&block|
@on_system_blocks_exist = true
@ -84,7 +87,10 @@ module OnSystem
result
end
end
end
sig { params(base: Class).void }
def setup_macos_methods(base)
MacOSVersions::SYMBOLS.each_key do |os_name|
base.define_method("on_#{os_name}") do |or_condition = nil, &block|
@on_system_blocks_exist = true
@ -100,4 +106,30 @@ module OnSystem
end
end
end
sig { params(_base: Class).void }
def self.included(_base)
raise "Do not include `OnSystem` directly. Instead, include `OnSystem::MacOSAndLinux` or `OnSystem::MacOSOnly`"
end
module MacOSAndLinux
extend T::Sig
sig { params(base: Class).void }
def self.included(base)
OnSystem.setup_arch_methods(base)
OnSystem.setup_base_os_methods(base)
OnSystem.setup_macos_methods(base)
end
end
module MacOSOnly
extend T::Sig
sig { params(base: Class).void }
def self.included(base)
OnSystem.setup_arch_methods(base)
OnSystem.setup_macos_methods(base)
end
end
end

View File

@ -64,7 +64,7 @@ class Formula
include Utils::Shebang
include Utils::Shell
include Context
include OnSystem
include OnSystem::MacOSAndLinux
extend Forwardable
extend Cachable
extend Predicable
@ -2470,7 +2470,7 @@ class Formula
# The methods below define the formula DSL.
class << self
include BuildEnvironment::DSL
include OnSystem
include OnSystem::MacOSAndLinux
def method_added(method)
super

View File

@ -17,7 +17,7 @@ class Resource
include Context
include FileUtils
include OnSystem
include OnSystem::MacOSAndLinux
attr_reader :mirrors, :specs, :using, :source_modified_time, :patches, :owner
attr_writer :version

View File

@ -18,7 +18,7 @@ class SoftwareSpec
extend T::Sig
extend Forwardable
include OnSystem
include OnSystem::MacOSAndLinux
PREDEFINED_OPTIONS = {
universal: Option.new("universal", "Build a universal binary"),
@ -583,7 +583,7 @@ class BottleSpecification
end
class PourBottleCheck
include OnSystem
include OnSystem::MacOSAndLinux
def initialize(formula)
@formula = formula