diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 88d9a535c2..c2d6aeaedc 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -1,11 +1,14 @@ -#: * `audit` [`--strict`] [`--online`] [`--new-formula`] [`--display-cop-names`] [`--display-filename`] []: +#: * `audit` [`--strict`] [`--fix`] [`--online`] [`--new-formula`] [`--display-cop-names`] [`--display-filename`] []: #: Check for Homebrew coding style violations. This should be #: run before submitting a new formula. #: #: If no are provided, all of them are checked. #: #: If `--strict` is passed, additional checks are run, including RuboCop -#: style checks. +#: style checks and custom cop checks. +#: +#: If `--fix` is passed, style violations and custom cop violations will be +#: automatically fixed using RuboCop's `--auto-correct` feature. #: #: If `--online` is passed, additional slower checks that require a network #: connection are run. @@ -62,8 +65,9 @@ module Homebrew end if strict + options = { fix: ARGV.flag?("--fix"), realpath: true } # Check style in a single batch run up front for performance - style_results = check_style_json(files, realpath: true) + style_results = check_style_json(files, options) end ff.each do |f| diff --git a/Library/Homebrew/rubocops/bottle_block_cop.rb b/Library/Homebrew/rubocops/bottle_block_cop.rb index 7cb97ea89e..6b699ab5ea 100644 --- a/Library/Homebrew/rubocops/bottle_block_cop.rb +++ b/Library/Homebrew/rubocops/bottle_block_cop.rb @@ -1,36 +1,34 @@ module RuboCop module Cop - module CustomCops + module CustomCops class CorrectBottleBlock < Cop - MSG = 'Use rebuild instead of revision in bottle block'.freeze + MSG = "Use rebuild instead of revision in bottle block".freeze def on_block(node) return if block_length(node).zero? - method, _args, _body = *node + method, _args, body = *node + _keyword, method_name = *method - keyword, method_name = *method - - if method_name.equal?(:bottle) and has_revision?(_body) - add_offense(node, :expression) - end + return unless method_name.equal?(:bottle) && revision?(body) + add_offense(node, :expression) end private def autocorrect(node) - ->(corrector) do + lambda do |corrector| # Check for revision - method, _args, _body = *node - if has_revision?(_body) + _method, _args, body = *node + if revision?(body) replace_revision(corrector, node) end end end - def has_revision?(body) + def revision?(body) body.children.each do |method_call_node| - _receiver, _method_name, *args = *method_call_node - if _method_name == :revision + _receiver, method_name, _args = *method_call_node + if method_name == :revision return true end end @@ -38,10 +36,10 @@ module RuboCop end def replace_revision(corrector, node) - new_source = String.new + new_source = "" node.source.each_line do |line| if line =~ /\A\s*revision/ - line = line.sub('revision','rebuild') + line = line.sub("revision", "rebuild") end new_source << line end