rubocops: point to offending OS-specific block in resource blocks
This commit is contained in:
parent
2e4b6c09f1
commit
33edb9f901
@ -65,11 +65,8 @@ module RuboCop
|
|||||||
|
|
||||||
(on_macos_blocks + on_linux_blocks).each do |on_os_block|
|
(on_macos_blocks + on_linux_blocks).each do |on_os_block|
|
||||||
on_os_body = on_os_block.body
|
on_os_body = on_os_block.body
|
||||||
if on_os_body.if_type?
|
branches = on_os_body.if_type? ? on_os_body.branches : [on_os_body]
|
||||||
on_os_bodies += on_os_body.branches.map { |branch| [on_os_block.method_name, branch] }
|
on_os_bodies += branches.map { |branch| [on_os_block, branch] }
|
||||||
else
|
|
||||||
on_os_bodies << [on_os_block.method_name, on_os_body]
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
message = nil
|
message = nil
|
||||||
@ -79,16 +76,19 @@ module RuboCop
|
|||||||
[:url, :version, :sha256],
|
[:url, :version, :sha256],
|
||||||
[:url, :mirror, :version, :sha256],
|
[:url, :mirror, :version, :sha256],
|
||||||
]
|
]
|
||||||
|
minimum_methods = allowed_methods.first.map { |m| "`#{m}`" }.to_sentence
|
||||||
|
maximum_methods = allowed_methods.last.map { |m| "`#{m}`" }.to_sentence
|
||||||
|
|
||||||
# TODO: Refactor this to point to the actual offending methods rather than the entire block.
|
on_os_bodies.each do |on_os_block, on_os_body|
|
||||||
on_os_bodies.each do |method_name, on_os_body|
|
method_name = on_os_block.method_name
|
||||||
child_nodes = on_os_body.begin_type? ? on_os_body.child_nodes : [on_os_body]
|
child_nodes = on_os_body.begin_type? ? on_os_body.child_nodes : [on_os_body]
|
||||||
if child_nodes.all? { |n| n.send_type? || n.block_type? }
|
if child_nodes.all? { |n| n.send_type? || n.block_type? }
|
||||||
method_names = child_nodes.map(&:method_name)
|
method_names = child_nodes.map(&:method_name)
|
||||||
next if allowed_methods.include? method_names
|
next if allowed_methods.include? method_names
|
||||||
end
|
end
|
||||||
|
offending_node(on_os_block)
|
||||||
message = "`#{method_name}` blocks within `resource` blocks must contain at least "\
|
message = "`#{method_name}` blocks within `resource` blocks must contain at least "\
|
||||||
"`url` and `mirror` and at most `url`, `mirror`, `version`, `sha256` (in order)."
|
"#{minimum_methods} and at most #{maximum_methods} (in order)."
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -614,8 +614,8 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do
|
|||||||
url "https://brew.sh/foo-1.0.tgz"
|
url "https://brew.sh/foo-1.0.tgz"
|
||||||
|
|
||||||
resource do
|
resource do
|
||||||
^^^^^^^^^^^ `on_macos` blocks within `resource` blocks must contain at least `url` and `mirror` and at most `url`, `mirror`, `version`, `sha256` (in order).
|
|
||||||
on_macos do
|
on_macos do
|
||||||
|
^^^^^^^^^^^ `on_macos` blocks within `resource` blocks must contain at least `url` and `sha256` and at most `url`, `mirror`, `version` and `sha256` (in order).
|
||||||
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
||||||
url "https://brew.sh/resource2.tar.gz"
|
url "https://brew.sh/resource2.tar.gz"
|
||||||
end
|
end
|
||||||
@ -681,8 +681,8 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do
|
|||||||
url "https://brew.sh/foo-1.0.tgz"
|
url "https://brew.sh/foo-1.0.tgz"
|
||||||
|
|
||||||
resource do
|
resource do
|
||||||
^^^^^^^^^^^ `on_macos` blocks within `resource` blocks must contain at least `url` and `mirror` and at most `url`, `mirror`, `version`, `sha256` (in order).
|
|
||||||
on_macos do
|
on_macos do
|
||||||
|
^^^^^^^^^^^ `on_macos` blocks within `resource` blocks must contain at least `url` and `sha256` and at most `url`, `mirror`, `version` and `sha256` (in order).
|
||||||
if foo == :bar
|
if foo == :bar
|
||||||
url "https://brew.sh/resource2.tar.gz"
|
url "https://brew.sh/resource2.tar.gz"
|
||||||
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
||||||
@ -707,13 +707,13 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do
|
|||||||
url "https://brew.sh/foo-1.0.tgz"
|
url "https://brew.sh/foo-1.0.tgz"
|
||||||
|
|
||||||
resource do
|
resource do
|
||||||
^^^^^^^^^^^ `on_linux` blocks within `resource` blocks must contain at least `url` and `mirror` and at most `url`, `mirror`, `version`, `sha256` (in order).
|
|
||||||
on_macos do
|
on_macos do
|
||||||
url "https://brew.sh/resource2.tar.gz"
|
url "https://brew.sh/resource2.tar.gz"
|
||||||
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
||||||
end
|
end
|
||||||
|
|
||||||
on_linux do
|
on_linux do
|
||||||
|
^^^^^^^^^^^ `on_linux` blocks within `resource` blocks must contain at least `url` and `sha256` and at most `url`, `mirror`, `version` and `sha256` (in order).
|
||||||
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
||||||
url "https://brew.sh/resource2.tar.gz"
|
url "https://brew.sh/resource2.tar.gz"
|
||||||
end
|
end
|
||||||
@ -753,13 +753,13 @@ describe RuboCop::Cop::FormulaAudit::ComponentsOrder do
|
|||||||
url "https://brew.sh/foo-1.0.tgz"
|
url "https://brew.sh/foo-1.0.tgz"
|
||||||
|
|
||||||
resource do
|
resource do
|
||||||
^^^^^^^^^^^ `on_linux` blocks within `resource` blocks must contain at least `url` and `mirror` and at most `url`, `mirror`, `version`, `sha256` (in order).
|
|
||||||
on_macos do
|
on_macos do
|
||||||
url "https://brew.sh/resource2.tar.gz"
|
url "https://brew.sh/resource2.tar.gz"
|
||||||
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
||||||
end
|
end
|
||||||
|
|
||||||
on_linux do
|
on_linux do
|
||||||
|
^^^^^^^^^^^ `on_linux` blocks within `resource` blocks must contain at least `url` and `sha256` and at most `url`, `mirror`, `version` and `sha256` (in order).
|
||||||
if foo == :bar
|
if foo == :bar
|
||||||
url "https://brew.sh/resource2.tar.gz"
|
url "https://brew.sh/resource2.tar.gz"
|
||||||
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
sha256 "586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user