brew/Library/Homebrew/rubocops/cask/no_dsl_version.rb

69 lines
1.5 KiB
Ruby
Raw Normal View History

2020-10-10 14:16:11 +02:00
# typed: true
# frozen_string_literal: true
require "forwardable"
module RuboCop
module Cop
module Cask
# Do not use the deprecated DSL version syntax in your cask header.
#
# @example
# # bad
# cask :v1 => 'foo' do
# ...
# end
#
# # good
# cask 'foo' do
# ...
# end
class NoDslVersion < Cop
2020-10-20 12:03:48 +02:00
extend T::Sig
extend Forwardable
include CaskHelp
2019-10-03 08:50:45 +02:00
MESSAGE = "Use `%<preferred>s` instead of `%<current>s`"
def on_cask(cask_block)
@cask_header = cask_block.header
return unless offense?
offense
end
def autocorrect(method_node)
@cask_header = cask_header(method_node)
lambda do |corrector|
corrector.replace(header_range, preferred_header_str)
end
end
private
def_delegator :@cask_header, :source_range, :header_range
def_delegators :@cask_header, :header_str, :preferred_header_str
def cask_header(method_node)
RuboCop::Cask::AST::CaskHeader.new(method_node)
end
def offense?
@cask_header.dsl_version?
end
def offense
add_offense(@cask_header.method_node, location: header_range,
message: error_msg)
end
2020-10-20 12:03:48 +02:00
sig { returns(String) }
def error_msg
format(MESSAGE, preferred: preferred_header_str, current: header_str)
end
end
end
end
end