diff --git a/Library/.rubocop.yml b/Library/.rubocop.yml index 1a253d3135..09ea653ef7 100644 --- a/Library/.rubocop.yml +++ b/Library/.rubocop.yml @@ -47,11 +47,6 @@ Cask/StanzaOrder: Description: "Ensure that cask stanzas are sorted correctly. More info at https://docs.brew.sh/Cask-Cookbook#stanza-order" Enabled: true -# This was intended to be an abstract Cop class for Homebrew formulae, but rubocop doesn't know that. -# TODO: refactor this as a module for formulae Cop classes to include instead -FormulaCop: - Enabled: false - # enable all formulae audits FormulaAudit: Enabled: true diff --git a/Library/Homebrew/rubocops/all.rb b/Library/Homebrew/rubocops/all.rb index 86cb5ab8e0..faad0fa2ba 100644 --- a/Library/Homebrew/rubocops/all.rb +++ b/Library/Homebrew/rubocops/all.rb @@ -13,29 +13,30 @@ Warnings.ignore :parser_syntax do end require_relative "io_read" +require_relative "move_to_extend_os" require_relative "shell_commands" -require_relative "platform" -require_relative "formula_desc" -require_relative "components_order" -require_relative "components_redundancy" -require_relative "dependency_order" -require_relative "homepage" -require_relative "text" +# formula audit cops +require_relative "bottle" require_relative "caveats" require_relative "checksum" -require_relative "patches" +require_relative "class" +require_relative "components_order" +require_relative "components_redundancy" require_relative "conflicts" -require_relative "options" -require_relative "urls" +require_relative "dependency_order" +require_relative "deprecate_disable" +require_relative "desc" +require_relative "files" +require_relative "homepage" +require_relative "keg_only" require_relative "lines" require_relative "livecheck" -require_relative "class" +require_relative "options" +require_relative "patches" +require_relative "text" +require_relative "urls" require_relative "uses_from_macos" -require_relative "files" -require_relative "keg_only" require_relative "version" -require_relative "deprecate_disable" -require_relative "bottle" require_relative "rubocop-cask" diff --git a/Library/Homebrew/rubocops/bottle.rb b/Library/Homebrew/rubocops/bottle.rb index fd69556cb6..556d3c7842 100644 --- a/Library/Homebrew/rubocops/bottle.rb +++ b/Library/Homebrew/rubocops/bottle.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/caveats.rb b/Library/Homebrew/rubocops/caveats.rb index 105a9796d4..417de01d5f 100644 --- a/Library/Homebrew/rubocops/caveats.rb +++ b/Library/Homebrew/rubocops/caveats.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/checksum.rb b/Library/Homebrew/rubocops/checksum.rb index e8035b8ee3..52e01584db 100644 --- a/Library/Homebrew/rubocops/checksum.rb +++ b/Library/Homebrew/rubocops/checksum.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/class.rb b/Library/Homebrew/rubocops/class.rb index 4ed2192b04..1d1a1b0c5b 100644 --- a/Library/Homebrew/rubocops/class.rb +++ b/Library/Homebrew/rubocops/class.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/components_order.rb b/Library/Homebrew/rubocops/components_order.rb index 7a59d6acdb..d1a92fe3da 100644 --- a/Library/Homebrew/rubocops/components_order.rb +++ b/Library/Homebrew/rubocops/components_order.rb @@ -2,7 +2,7 @@ # frozen_string_literal: true require "ast_constants" -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/components_redundancy.rb b/Library/Homebrew/rubocops/components_redundancy.rb index cf2067a701..63ce1c1db5 100644 --- a/Library/Homebrew/rubocops/components_redundancy.rb +++ b/Library/Homebrew/rubocops/components_redundancy.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/conflicts.rb b/Library/Homebrew/rubocops/conflicts.rb index 411ba92e5c..899625ab83 100644 --- a/Library/Homebrew/rubocops/conflicts.rb +++ b/Library/Homebrew/rubocops/conflicts.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/dependency_order.rb b/Library/Homebrew/rubocops/dependency_order.rb index d5660d5635..061b2a0633 100644 --- a/Library/Homebrew/rubocops/dependency_order.rb +++ b/Library/Homebrew/rubocops/dependency_order.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/deprecate_disable.rb b/Library/Homebrew/rubocops/deprecate_disable.rb index 53c714123a..ca06376bd3 100644 --- a/Library/Homebrew/rubocops/deprecate_disable.rb +++ b/Library/Homebrew/rubocops/deprecate_disable.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/formula_desc.rb b/Library/Homebrew/rubocops/desc.rb similarity index 94% rename from Library/Homebrew/rubocops/formula_desc.rb rename to Library/Homebrew/rubocops/desc.rb index 0093e752e1..8fb342d3f9 100644 --- a/Library/Homebrew/rubocops/formula_desc.rb +++ b/Library/Homebrew/rubocops/desc.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" require "rubocops/shared/desc_helper" module RuboCop diff --git a/Library/Homebrew/rubocops/extend/formula.rb b/Library/Homebrew/rubocops/extend/formula_cop.rb similarity index 93% rename from Library/Homebrew/rubocops/extend/formula.rb rename to Library/Homebrew/rubocops/extend/formula_cop.rb index 33359bd114..889924c267 100644 --- a/Library/Homebrew/rubocops/extend/formula.rb +++ b/Library/Homebrew/rubocops/extend/formula_cop.rb @@ -5,13 +5,18 @@ require "rubocops/shared/helper_functions" module RuboCop module Cop - # Superclass for all formula cops. + # Abstract base class for all formula cops. # # @api private class FormulaCop < Base + extend T::Sig + extend T::Helpers include RangeHelp include HelperFunctions + abstract! + exclude_from_registry + attr_accessor :file_path @registry = Cop.registry @@ -28,9 +33,16 @@ module RuboCop audit_formula(node, class_node, parent_class_node, @body) end - def audit_formula(node, class_node, parent_class_node, body_node) - raise NotImplementedError, "Subclasses must implement this method." - end + sig { + abstract + .params( + node: RuboCop::AST::ClassNode, + class_node: RuboCop::AST::ConstNode, + parent_class_node: RuboCop::AST::ConstNode, + body_node: RuboCop::AST::Node, + ).void + } + def audit_formula(node, class_node, parent_class_node, body_node); end # Yields to block when there is a match. # @@ -67,11 +79,7 @@ module RuboCop # Returns true if given dependency name and dependency type exist in given dependency method call node. # TODO: Add case where key of hash is an array def depends_on_name_type?(node, name = nil, type = :required) - name_match = if name - false - else - true # Match only by type when name is nil - end + name_match = !name # Match only by type when name is nil case type when :required diff --git a/Library/Homebrew/rubocops/files.rb b/Library/Homebrew/rubocops/files.rb index 63d3d7566a..a27a37b6c0 100644 --- a/Library/Homebrew/rubocops/files.rb +++ b/Library/Homebrew/rubocops/files.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/homepage.rb b/Library/Homebrew/rubocops/homepage.rb index bae5437105..ccf498c146 100644 --- a/Library/Homebrew/rubocops/homepage.rb +++ b/Library/Homebrew/rubocops/homepage.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/keg_only.rb b/Library/Homebrew/rubocops/keg_only.rb index ea2bd9131d..d28e7c56c7 100644 --- a/Library/Homebrew/rubocops/keg_only.rb +++ b/Library/Homebrew/rubocops/keg_only.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/lines.rb b/Library/Homebrew/rubocops/lines.rb index 80cd35561d..10aa5a4ab8 100644 --- a/Library/Homebrew/rubocops/lines.rb +++ b/Library/Homebrew/rubocops/lines.rb @@ -2,7 +2,7 @@ # frozen_string_literal: true require "macos_versions" -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" require "rubocops/shared/on_system_conditionals_helper" module RuboCop diff --git a/Library/Homebrew/rubocops/livecheck.rb b/Library/Homebrew/rubocops/livecheck.rb index 8ff8122f90..b9a45087bf 100644 --- a/Library/Homebrew/rubocops/livecheck.rb +++ b/Library/Homebrew/rubocops/livecheck.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/platform.rb b/Library/Homebrew/rubocops/move_to_extend_os.rb similarity index 100% rename from Library/Homebrew/rubocops/platform.rb rename to Library/Homebrew/rubocops/move_to_extend_os.rb diff --git a/Library/Homebrew/rubocops/options.rb b/Library/Homebrew/rubocops/options.rb index 817399e05b..77b8ee8d97 100644 --- a/Library/Homebrew/rubocops/options.rb +++ b/Library/Homebrew/rubocops/options.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/patches.rb b/Library/Homebrew/rubocops/patches.rb index e16c370686..e28b42761d 100644 --- a/Library/Homebrew/rubocops/patches.rb +++ b/Library/Homebrew/rubocops/patches.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/text.rb b/Library/Homebrew/rubocops/text.rb index 11f7f67cf0..ace6f32142 100644 --- a/Library/Homebrew/rubocops/text.rb +++ b/Library/Homebrew/rubocops/text.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/urls.rb b/Library/Homebrew/rubocops/urls.rb index a2e66b55c7..34d4a65e2b 100644 --- a/Library/Homebrew/rubocops/urls.rb +++ b/Library/Homebrew/rubocops/urls.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/uses_from_macos.rb b/Library/Homebrew/rubocops/uses_from_macos.rb index 62b9f325d7..3c9b250d8e 100644 --- a/Library/Homebrew/rubocops/uses_from_macos.rb +++ b/Library/Homebrew/rubocops/uses_from_macos.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/rubocops/version.rb b/Library/Homebrew/rubocops/version.rb index a6afb74449..3a0c5ccc20 100644 --- a/Library/Homebrew/rubocops/version.rb +++ b/Library/Homebrew/rubocops/version.rb @@ -1,7 +1,7 @@ # typed: true # frozen_string_literal: true -require "rubocops/extend/formula" +require "rubocops/extend/formula_cop" module RuboCop module Cop diff --git a/Library/Homebrew/test/rubocops/formula_desc_spec.rb b/Library/Homebrew/test/rubocops/desc_spec.rb similarity index 99% rename from Library/Homebrew/test/rubocops/formula_desc_spec.rb rename to Library/Homebrew/test/rubocops/desc_spec.rb index f1548f3173..392508ce83 100644 --- a/Library/Homebrew/test/rubocops/formula_desc_spec.rb +++ b/Library/Homebrew/test/rubocops/desc_spec.rb @@ -1,7 +1,7 @@ # typed: false # frozen_string_literal: true -require "rubocops/formula_desc" +require "rubocops/desc" describe RuboCop::Cop::FormulaAudit::Desc do subject(:cop) { described_class.new } diff --git a/Library/Homebrew/test/rubocops/platform_spec.rb b/Library/Homebrew/test/rubocops/move_to_extend_os_spec.rb similarity index 93% rename from Library/Homebrew/test/rubocops/platform_spec.rb rename to Library/Homebrew/test/rubocops/move_to_extend_os_spec.rb index 4e8872c077..e49b1d2d03 100644 --- a/Library/Homebrew/test/rubocops/platform_spec.rb +++ b/Library/Homebrew/test/rubocops/move_to_extend_os_spec.rb @@ -1,7 +1,7 @@ # typed: false # frozen_string_literal: true -require "rubocops/platform" +require "rubocops/move_to_extend_os" describe RuboCop::Cop::Homebrew::MoveToExtendOS do subject(:cop) { described_class.new }