From 2dea4f2370c88eea158996d8a4006779fce0c29d Mon Sep 17 00:00:00 2001 From: Markus Reiter Date: Sat, 22 Apr 2023 04:00:04 +0200 Subject: [PATCH] Add `on_cask_stanza_block`. --- Library/Homebrew/rubocops/cask/extend/node.rb | 3 ++- .../Homebrew/rubocops/cask/mixin/cask_help.rb | 16 +++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/rubocops/cask/extend/node.rb b/Library/Homebrew/rubocops/cask/extend/node.rb index ec79aa4f3f..2fa13eabc7 100644 --- a/Library/Homebrew/rubocops/cask/extend/node.rb +++ b/Library/Homebrew/rubocops/cask/extend/node.rb @@ -14,7 +14,8 @@ module RuboCop def_node_matcher :key_node, "{(pair $_ _) (hash (pair $_ _) ...)}" def_node_matcher :val_node, "{(pair _ $_) (hash (pair _ $_) ...)}" - def_node_matcher :cask_block?, "(block (send nil? :cask _) args ...)" + def_node_matcher :cask_block?, "(block (send nil? :cask ...) args ...)" + def_node_matcher :on_system_block?, "(block (send nil? {#{ON_SYSTEM_METHODS.map(&:inspect).join(" ")}} ...) args ...)" def_node_matcher :arch_variable?, "(lvasgn _ (send nil? :on_arch_conditional ...))" def_node_matcher :begin_block?, "(begin ...)" diff --git a/Library/Homebrew/rubocops/cask/mixin/cask_help.rb b/Library/Homebrew/rubocops/cask/mixin/cask_help.rb index f4ba80c8f1..8126c33660 100644 --- a/Library/Homebrew/rubocops/cask/mixin/cask_help.rb +++ b/Library/Homebrew/rubocops/cask/mixin/cask_help.rb @@ -13,14 +13,20 @@ module RuboCop sig { abstract.params(cask_block: RuboCop::Cask::AST::CaskBlock).void } def on_cask(cask_block); end + def on_cask_stanza_block(cask_stanza_block); end + def on_block(block_node) super if defined? super - return unless respond_to?(:on_cask) - return unless block_node.cask_block? - comments = processed_source.comments - cask_block = RuboCop::Cask::AST::CaskBlock.new(block_node, comments) - on_cask(cask_block) + if respond_to?(:on_cask_stanza_block) && (block_node.cask_block? || block_node.on_system_block?) + on_cask_stanza_block(block_node) + end + + if respond_to?(:on_cask) && block_node.cask_block? + comments = processed_source.comments + cask_block = RuboCop::Cask::AST::CaskBlock.new(block_node, comments) + on_cask(cask_block) + end end def on_system_methods(cask_stanzas)