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

38 lines
1.0 KiB
Ruby
Raw Normal View History

# typed: true
# frozen_string_literal: true
module RuboCop
module Cop
module Cask
class SharedFilelistGlob < Base
extend AutoCorrector
def on_send(node)
2024-02-04 14:34:30 +01:00
return if node.method_name != :zap
node.each_descendant(:pair).each do |pair|
symbols = pair.children.select(&:sym_type?).map(&:value)
next unless symbols.include?(:trash)
pair.each_descendant(:array).each do |array|
regex = /\.sfl\d"$/
2024-02-04 14:34:30 +01:00
message = "Use a glob (*) instead of a specific version (ie. sfl2) for trashing Shared File List paths"
array.children.each do |item|
2024-02-04 14:34:30 +01:00
next unless item.source.match?(regex)
2024-02-04 14:34:30 +01:00
corrected_item = item.source.sub(/sfl\d"$/, "sfl*\"")
2024-02-04 14:34:30 +01:00
add_offense(item,
message: message) do |corrector|
corrector.replace(item, corrected_item)
end
end
end
end
end
end
end
end
end