brew/Library/Homebrew/rubocops/cask/discontinued.rb
Issy Long 9a97456767
Bump more Cask RuboCops to Sorbet typed: strict
- This includes a new Tapioca compiler for
  `RuboCop::Cask::AST::Stanza` dynamic methods like
  `caveats?`.
2025-01-25 18:45:24 +00:00

44 lines
1.3 KiB
Ruby

# typed: strict
# frozen_string_literal: true
module RuboCop
module Cop
module Cask
# This cop corrects `caveats { discontinued }` to `deprecate!`.
class Discontinued < Base
include CaskHelp
extend AutoCorrector
MESSAGE = "Use `deprecate!` instead of `caveats { discontinued }`."
sig { override.params(stanza_block: RuboCop::Cask::AST::StanzaBlock).void }
def on_cask_stanza_block(stanza_block)
stanza_block.stanzas.select(&:caveats?).each do |stanza|
find_discontinued_method_call(stanza.stanza_node) do |node|
if caveats_contains_only_discontinued?(node.parent)
add_offense(node.parent, message: MESSAGE) do |corrector|
corrector.replace(node.parent.source_range,
"deprecate! date: \"#{Date.today}\", because: :discontinued")
end
else
add_offense(node, message: MESSAGE)
end
end
end
end
def_node_matcher :caveats_contains_only_discontinued?, <<~EOS
(block
(send nil? :caveats)
(args)
(send nil? :discontinued))
EOS
def_node_search :find_discontinued_method_call, <<~EOS
$(send nil? :discontinued)
EOS
end
end
end
end