mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00

- This includes a new Tapioca compiler for `RuboCop::Cask::AST::Stanza` dynamic methods like `caveats?`.
44 lines
1.3 KiB
Ruby
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
|