Merge pull request #19806 from Homebrew/cask-dsl-initialize-instance-variables

Cask::DSL: define instance variables in initialize
This commit is contained in:
Bo Anderson 2025-04-23 02:34:05 +00:00 committed by GitHub
commit 076fdc30ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 42 additions and 25 deletions

View File

@ -90,14 +90,14 @@ module Cask
:deprecated?, :deprecated?,
:deprecation_date, :deprecation_date,
:deprecation_reason, :deprecation_reason,
:deprecation_replacement_formula,
:deprecation_replacement_cask, :deprecation_replacement_cask,
:deprecation_replacement_formula,
:disable!, :disable!,
:disabled?, :disabled?,
:disable_date, :disable_date,
:disable_reason, :disable_reason,
:disable_replacement_formula,
:disable_replacement_cask, :disable_replacement_cask,
:disable_replacement_formula,
:discontinued?, # TODO: remove once discontinued? is removed (4.5.0) :discontinued?, # TODO: remove once discontinued? is removed (4.5.0)
:livecheck, :livecheck,
:livecheck_defined?, :livecheck_defined?,
@ -112,18 +112,39 @@ module Cask
include OnSystem::MacOSAndLinux include OnSystem::MacOSAndLinux
attr_reader :cask, :token, :deprecation_date, :deprecation_reason, :deprecation_replacement_formula, attr_reader :cask, :token, :artifacts, :deprecation_date, :deprecation_reason,
:deprecation_replacement_cask, :disable_date, :disable_reason, :disable_replacement_formula, :deprecation_replacement_cask, :deprecation_replacement_formula,
:disable_replacement_cask, :on_system_block_min_os :disable_date, :disable_reason, :disable_replacement_cask,
:disable_replacement_formula, :on_system_block_min_os
sig { params(cask: Cask).void }
def initialize(cask) def initialize(cask)
@cask = cask @artifacts = T.let(ArtifactSet.new, ArtifactSet)
@called_in_on_system_block = T.let(false, T::Boolean)
@cask = T.let(cask, Cask)
@caveats = T.let(DSL::Caveats.new(cask), DSL::Caveats)
@depends_on = T.let(DSL::DependsOn.new, DSL::DependsOn)
@depends_on_set_in_block = T.let(false, T::Boolean) @depends_on_set_in_block = T.let(false, T::Boolean)
@deprecated = T.let(false, T::Boolean) @deprecated = T.let(false, T::Boolean)
@deprecation_date = T.let(nil, T.nilable(Date))
@deprecation_reason = T.let(nil, T.nilable(T.any(String, Symbol)))
@deprecation_replacement_cask = T.let(nil, T.nilable(String))
@deprecation_replacement_formula = T.let(nil, T.nilable(String))
@disable_date = T.let(nil, T.nilable(Date))
@disable_reason = T.let(nil, T.nilable(T.any(String, Symbol)))
@disable_replacement_cask = T.let(nil, T.nilable(String))
@disable_replacement_formula = T.let(nil, T.nilable(String))
@disabled = T.let(false, T::Boolean) @disabled = T.let(false, T::Boolean)
@language_blocks = T.let({}, T::Hash[T::Array[String], Proc])
@language_eval = T.let(nil, T.nilable(String))
@livecheck = T.let(Livecheck.new(cask), Livecheck)
@livecheck_defined = T.let(false, T::Boolean) @livecheck_defined = T.let(false, T::Boolean)
@name = T.let([], T::Array[String])
@on_system_blocks_exist = T.let(false, T::Boolean) @on_system_blocks_exist = T.let(false, T::Boolean)
@token = cask.token @token = cask.token
@on_system_block_min_os = T.let(nil, T.nilable(MacOSVersion))
@staged_path = T.let(nil, T.nilable(Pathname))
@token = T.let(cask.token, String)
end end
sig { returns(T::Boolean) } sig { returns(T::Boolean) }
@ -153,7 +174,6 @@ module Cask
# #
# @api public # @api public
def name(*args) def name(*args)
@name ||= []
return @name if args.empty? return @name if args.empty?
@name.concat(args.flatten) @name.concat(args.flatten)
@ -210,7 +230,6 @@ module Cask
if args.empty? if args.empty?
language_eval language_eval
elsif block elsif block
@language_blocks ||= {}
@language_blocks[args] = block @language_blocks[args] = block
return unless default return unless default
@ -226,11 +245,13 @@ module Cask
end end
def language_eval def language_eval
return @language_eval if defined?(@language_eval) return @language_eval unless @language_eval.nil?
return @language_eval = nil if @language_blocks.blank? return @language_eval = nil if @language_blocks.empty?
raise CaskInvalidError.new(cask, "No default language specified.") if @language_blocks.default.nil? if (language_blocks_default = @language_blocks.default).nil?
raise CaskInvalidError.new(cask, "No default language specified.")
end
locales = cask.config.languages locales = cask.config.languages
.filter_map do |language| .filter_map do |language|
@ -241,18 +262,15 @@ module Cask
locales.each do |locale| locales.each do |locale|
key = locale.detect(@language_blocks.keys) key = locale.detect(@language_blocks.keys)
next if key.nil? || (language_block = @language_blocks[key]).nil?
next if key.nil? return @language_eval = language_block.call
return @language_eval = @language_blocks[key].call
end end
@language_eval = @language_blocks.default.call @language_eval = language_blocks_default.call
end end
def languages def languages
return [] if @language_blocks.nil?
@language_blocks.keys.flatten @language_blocks.keys.flatten
end end
@ -425,7 +443,6 @@ module Cask
# #
# @api public # @api public
def depends_on(**kwargs) def depends_on(**kwargs)
@depends_on ||= DSL::DependsOn.new
@depends_on_set_in_block = true if @called_in_on_system_block @depends_on_set_in_block = true if @called_in_on_system_block
return @depends_on if kwargs.empty? return @depends_on if kwargs.empty?
@ -439,7 +456,7 @@ module Cask
# @api private # @api private
def add_implicit_macos_dependency def add_implicit_macos_dependency
return if @depends_on.present? && @depends_on.macos.present? return if (cask_depends_on = @depends_on).present? && cask_depends_on.macos.present?
depends_on macos: ">= :#{MacOSVersion::SYMBOLS.key MacOSVersion::SYMBOLS.values.min}" depends_on macos: ">= :#{MacOSVersion::SYMBOLS.key MacOSVersion::SYMBOLS.values.min}"
end end
@ -452,10 +469,6 @@ module Cask
set_unique_stanza(:conflicts_with, kwargs.empty?) { DSL::ConflictsWith.new(**kwargs) } set_unique_stanza(:conflicts_with, kwargs.empty?) { DSL::ConflictsWith.new(**kwargs) }
end end
def artifacts
@artifacts ||= ArtifactSet.new
end
sig { returns(Pathname) } sig { returns(Pathname) }
def caskroom_path def caskroom_path
cask.caskroom_path cask.caskroom_path
@ -476,7 +489,6 @@ module Cask
# #
# @api public # @api public
def caveats(*strings, &block) def caveats(*strings, &block)
@caveats ||= DSL::Caveats.new(cask)
if block if block
@caveats.eval_caveats(&block) @caveats.eval_caveats(&block)
elsif strings.any? elsif strings.any?
@ -500,7 +512,6 @@ module Cask
# #
# @api public # @api public
def livecheck(&block) def livecheck(&block)
@livecheck ||= Livecheck.new(cask)
return @livecheck unless block return @livecheck unless block
if !@cask.allow_reassignment && @livecheck_defined if !@cask.allow_reassignment && @livecheck_defined

View File

@ -82,6 +82,12 @@ module Cask
@arch.concat(arches.map { |arch| VALID_ARCHES[arch] }) @arch.concat(arches.map { |arch| VALID_ARCHES[arch] })
end end
sig { returns(T::Boolean) }
def empty? = T.let(__getobj__, T::Hash[Symbol, T.untyped]).empty?
sig { returns(T::Boolean) }
def present? = !empty?
end end
end end
end end