rubocops/cask/*: use rubocop v1 API
This commit is contained in:
parent
30f7a872b5
commit
ac8eb00443
@ -9,8 +9,9 @@ module RuboCop
|
|||||||
module Cask
|
module Cask
|
||||||
# This cop checks that a cask's homepage ends with a slash
|
# This cop checks that a cask's homepage ends with a slash
|
||||||
# if it does not have a path component.
|
# if it does not have a path component.
|
||||||
class HomepageUrlTrailingSlash < Cop
|
class HomepageUrlTrailingSlash < Base
|
||||||
include OnHomepageStanza
|
include OnHomepageStanza
|
||||||
|
extend AutoCorrector
|
||||||
|
|
||||||
MSG_NO_SLASH = "'%<url>s' must have a slash after the domain."
|
MSG_NO_SLASH = "'%<url>s' must have a slash after the domain."
|
||||||
|
|
||||||
@ -26,19 +27,14 @@ module RuboCop
|
|||||||
|
|
||||||
return unless url&.match?(%r{^.+://[^/]+$})
|
return unless url&.match?(%r{^.+://[^/]+$})
|
||||||
|
|
||||||
add_offense(url_node, location: :expression,
|
domain = URI(url_node.str_content).host
|
||||||
message: format(MSG_NO_SLASH, url: url))
|
|
||||||
end
|
|
||||||
|
|
||||||
def autocorrect(node)
|
|
||||||
domain = URI(node.str_content).host
|
|
||||||
|
|
||||||
# This also takes URLs like 'https://example.org?path'
|
# This also takes URLs like 'https://example.org?path'
|
||||||
# and 'https://example.org#path' into account.
|
# and 'https://example.org#path' into account.
|
||||||
corrected_source = node.source.sub("://#{domain}", "://#{domain}/")
|
corrected_source = url_node.source.sub("://#{domain}", "://#{domain}/")
|
||||||
|
|
||||||
lambda do |corrector|
|
add_offense(url_node.loc.expression, message: format(MSG_NO_SLASH, url: url)) do |corrector|
|
||||||
corrector.replace(node.source_range, corrected_source)
|
corrector.replace(url_node.source_range, corrected_source)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -18,10 +18,11 @@ module RuboCop
|
|||||||
# cask 'foo' do
|
# cask 'foo' do
|
||||||
# ...
|
# ...
|
||||||
# end
|
# end
|
||||||
class NoDslVersion < Cop
|
class NoDslVersion < Base
|
||||||
extend T::Sig
|
extend T::Sig
|
||||||
|
|
||||||
extend Forwardable
|
extend Forwardable
|
||||||
|
extend AutoCorrector
|
||||||
include CaskHelp
|
include CaskHelp
|
||||||
|
|
||||||
MESSAGE = "Use `%<preferred>s` instead of `%<current>s`"
|
MESSAGE = "Use `%<preferred>s` instead of `%<current>s`"
|
||||||
@ -33,13 +34,6 @@ module RuboCop
|
|||||||
offense
|
offense
|
||||||
end
|
end
|
||||||
|
|
||||||
def autocorrect(method_node)
|
|
||||||
@cask_header = cask_header(method_node)
|
|
||||||
lambda do |corrector|
|
|
||||||
corrector.replace(header_range, preferred_header_str)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def_delegator :@cask_header, :source_range, :header_range
|
def_delegator :@cask_header, :source_range, :header_range
|
||||||
@ -54,8 +48,9 @@ module RuboCop
|
|||||||
end
|
end
|
||||||
|
|
||||||
def offense
|
def offense
|
||||||
add_offense(@cask_header.method_node, location: header_range,
|
add_offense(header_range, message: error_msg) do |corrector|
|
||||||
message: error_msg)
|
corrector.replace(header_range, preferred_header_str)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { returns(String) }
|
sig { returns(String) }
|
||||||
|
|||||||
@ -8,8 +8,9 @@ module RuboCop
|
|||||||
module Cask
|
module Cask
|
||||||
# This cop checks that a cask's stanzas are grouped correctly.
|
# This cop checks that a cask's stanzas are grouped correctly.
|
||||||
# @see https://github.com/Homebrew/homebrew-cask/blob/HEAD/doc/cask_language_reference/readme.md#stanza-order
|
# @see https://github.com/Homebrew/homebrew-cask/blob/HEAD/doc/cask_language_reference/readme.md#stanza-order
|
||||||
class StanzaGrouping < Cop
|
class StanzaGrouping < Base
|
||||||
extend Forwardable
|
extend Forwardable
|
||||||
|
extend AutoCorrector
|
||||||
include CaskHelp
|
include CaskHelp
|
||||||
include RangeHelp
|
include RangeHelp
|
||||||
|
|
||||||
@ -25,17 +26,6 @@ module RuboCop
|
|||||||
add_offenses
|
add_offenses
|
||||||
end
|
end
|
||||||
|
|
||||||
def autocorrect(range)
|
|
||||||
lambda do |corrector|
|
|
||||||
case line_ops[range.line - 1]
|
|
||||||
when :insert
|
|
||||||
corrector.insert_before(range, "\n")
|
|
||||||
when :remove
|
|
||||||
corrector.remove(range)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
attr_reader :cask_block, :line_ops
|
attr_reader :cask_block, :line_ops
|
||||||
@ -79,20 +69,24 @@ module RuboCop
|
|||||||
def add_offense_missing_line(stanza)
|
def add_offense_missing_line(stanza)
|
||||||
line_index = index_of_line_after(stanza)
|
line_index = index_of_line_after(stanza)
|
||||||
line_ops[line_index] = :insert
|
line_ops[line_index] = :insert
|
||||||
add_offense(line_index, message: MISSING_LINE_MSG)
|
add_offense(line_index, message: MISSING_LINE_MSG) do |corrector|
|
||||||
|
corrector.insert_before(@range, "\n")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_offense_extra_line(stanza)
|
def add_offense_extra_line(stanza)
|
||||||
line_index = index_of_line_after(stanza)
|
line_index = index_of_line_after(stanza)
|
||||||
line_ops[line_index] = :remove
|
line_ops[line_index] = :remove
|
||||||
add_offense(line_index, message: EXTRA_LINE_MSG)
|
add_offense(line_index, message: EXTRA_LINE_MSG) do |corrector|
|
||||||
|
corrector.remove(@range)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_offense(line_index, message:)
|
def add_offense(line_index, message:)
|
||||||
line_length = [processed_source[line_index].size, 1].max
|
line_length = [processed_source[line_index].size, 1].max
|
||||||
range = source_range(processed_source.buffer, line_index + 1, 0,
|
@range = source_range(processed_source.buffer, line_index + 1, 0,
|
||||||
line_length)
|
line_length)
|
||||||
super(range, location: range, message: message)
|
super(@range, message: message)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -8,8 +8,9 @@ module RuboCop
|
|||||||
module Cask
|
module Cask
|
||||||
# This cop checks that a cask's stanzas are ordered correctly.
|
# This cop checks that a cask's stanzas are ordered correctly.
|
||||||
# @see https://github.com/Homebrew/homebrew-cask/blob/HEAD/doc/cask_language_reference/readme.md#stanza-order
|
# @see https://github.com/Homebrew/homebrew-cask/blob/HEAD/doc/cask_language_reference/readme.md#stanza-order
|
||||||
class StanzaOrder < Cop
|
class StanzaOrder < Base
|
||||||
extend Forwardable
|
extend Forwardable
|
||||||
|
extend AutoCorrector
|
||||||
include CaskHelp
|
include CaskHelp
|
||||||
|
|
||||||
MESSAGE = "`%<stanza>s` stanza out of order"
|
MESSAGE = "`%<stanza>s` stanza out of order"
|
||||||
@ -19,15 +20,6 @@ module RuboCop
|
|||||||
add_offenses
|
add_offenses
|
||||||
end
|
end
|
||||||
|
|
||||||
def autocorrect(stanza)
|
|
||||||
lambda do |corrector|
|
|
||||||
correct_stanza_index = toplevel_stanzas.index(stanza)
|
|
||||||
correct_stanza = sorted_toplevel_stanzas[correct_stanza_index]
|
|
||||||
corrector.replace(stanza.source_range_with_comments,
|
|
||||||
correct_stanza.source_with_comments)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
attr_reader :cask_block
|
attr_reader :cask_block
|
||||||
@ -38,8 +30,12 @@ module RuboCop
|
|||||||
def add_offenses
|
def add_offenses
|
||||||
offending_stanzas.each do |stanza|
|
offending_stanzas.each do |stanza|
|
||||||
message = format(MESSAGE, stanza: stanza.stanza_name)
|
message = format(MESSAGE, stanza: stanza.stanza_name)
|
||||||
add_offense(stanza, location: stanza.source_range_with_comments,
|
add_offense(stanza.source_range_with_comments, message: message) do |corrector|
|
||||||
message: message)
|
correct_stanza_index = toplevel_stanzas.index(stanza)
|
||||||
|
correct_stanza = sorted_toplevel_stanzas[correct_stanza_index]
|
||||||
|
corrector.replace(stanza.source_range_with_comments,
|
||||||
|
correct_stanza.source_with_comments)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -21,14 +21,13 @@ module CaskCop
|
|||||||
end
|
end
|
||||||
|
|
||||||
def expect_no_offenses(source)
|
def expect_no_offenses(source)
|
||||||
inspect_source(source)
|
expect(inspect_source(source)).to be_empty
|
||||||
expect(cop.offenses).to be_empty
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def expect_reported_offenses(source, expected_offenses)
|
def expect_reported_offenses(source, expected_offenses)
|
||||||
inspect_source(source)
|
offenses = inspect_source(source)
|
||||||
expect(cop.offenses.size).to eq(expected_offenses.size)
|
expect(offenses.size).to eq(expected_offenses.size)
|
||||||
expected_offenses.zip(cop.offenses).each do |expected, actual|
|
expected_offenses.zip(offenses).each do |expected, actual|
|
||||||
expect_offense(expected, actual)
|
expect_offense(expected, actual)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user