mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
34 lines
1.4 KiB
Ruby
34 lines
1.4 KiB
Ruby
![]() |
require_relative "./extend/formula_cop"
|
||
|
|
||
|
module RuboCop
|
||
|
module Cop
|
||
|
module Homebrew
|
||
|
# This cop checks if redundant components are present and other component errors
|
||
|
#
|
||
|
# - `url|checksum|mirror` should be inside `stable` block
|
||
|
# - `head` and `head do` should not be simultaneously present
|
||
|
# - `bottle :unneeded/:disable` and `bottle do` should not be simultaneously present
|
||
|
|
||
|
class ComponentsRedundancy < FormulaCop
|
||
|
HEAD_MSG = "`head` and `head do` should not be simultaneously present".freeze
|
||
|
BOTTLE_MSG = "`bottle :modifier` and `bottle do` should not be simultaneously present".freeze
|
||
|
|
||
|
def audit_formula(_node, _class_node, _parent_class_node, formula_class_body_node)
|
||
|
stable_block = find_block(formula_class_body_node, :stable)
|
||
|
if stable_block
|
||
|
[:url, :sha256, :mirror].each do |method_name|
|
||
|
problem "`#{method_name}` should be put inside `stable` block" if method_called?(formula_class_body_node, method_name)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
problem HEAD_MSG if method_called?(formula_class_body_node, :head) &&
|
||
|
find_block(formula_class_body_node, :head)
|
||
|
|
||
|
problem BOTTLE_MSG if method_called?(formula_class_body_node, :bottle) &&
|
||
|
find_block(formula_class_body_node, :bottle)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|