Cask::DSL: define instance variables in initialize
We're now seeing warnings related to the cask DSL surfaced by Ruby 3.4: ``` /opt/homebrew/Library/Homebrew/cask/dsl.rb:456: warning: The class Cask::DSL reached 8 shape variations, instance variables accesses will be slower and memory usage increased. It is recommended to define instance variables in a consistent order, for instance by eagerly defining them all in the #initialize method. ``` I've been working on upgrading `Cask::DSL` to `typed: strict` and part of that involves defining all of the instance variables in the `initialize` method, so I've extracted this part of that work as a way of helping to resolve the aforementioned warning. This doesn't fully resolve the warning but it addresses what it was originally referencing, at least. For what it's worth, this includes some type fixes but I've only included what's necessary to pass `brew typecheck`.
This commit is contained in:
parent
c495aa3e63
commit
5b5c460ab9
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user