diff --git a/Library/Homebrew/cli/named_args.rb b/Library/Homebrew/cli/named_args.rb index 4f245e9744..5ad8a27c43 100644 --- a/Library/Homebrew/cli/named_args.rb +++ b/Library/Homebrew/cli/named_args.rb @@ -74,8 +74,33 @@ module Homebrew end def to_formulae_paths - @to_formulae_paths ||= (downcased_unique_named - homebrew_tap_cask_names).map do |name| - Formulary.path(name) + to_paths(only: :formulae) + end + + # Keep existing paths and try to convert others to tap, formula or cask paths. + # If a cask and formula with the same name exist, includes both their paths + # unless `only` is specified. + def to_paths(only: nil) + @to_paths ||= {} + @to_paths[only] ||= downcased_unique_named.flat_map do |name| + if File.exist?(name) + name + elsif name.count("/") == 1 + Tap.fetch(name).path + else + next Formulary.path(name) if only == :formulae + next Cask::CaskLoader.path(name) if only == :casks + + formula_path = Formulary.path(name) + cask_path = Cask::CaskLoader.path(name) + + paths = [] + + paths << formula_path if formula_path.exist? + paths << cask_path if cask_path.exist? + + paths.empty? ? name : paths + end end.uniq.freeze end diff --git a/Library/Homebrew/dev-cmd/style.rb b/Library/Homebrew/dev-cmd/style.rb index 7ae81cb0fc..26da075aa8 100644 --- a/Library/Homebrew/dev-cmd/style.rb +++ b/Library/Homebrew/dev-cmd/style.rb @@ -39,12 +39,8 @@ module Homebrew target = if args.no_named? nil - elsif args.named.any? { |file| File.exist? file } - args.named - elsif args.named.any? { |tap| tap.count("/") == 1 } - args.named.map { |tap| Tap.fetch(tap).path } else - args.named.to_formulae_paths + args.named.to_paths end only_cops = args.only_cops diff --git a/Library/Homebrew/style.rb b/Library/Homebrew/style.rb index 9d31a8f724..eaf4dda441 100644 --- a/Library/Homebrew/style.rb +++ b/Library/Homebrew/style.rb @@ -126,10 +126,9 @@ module Homebrew when :print args << "--debug" if debug - if ENV["CI"] - # Don't show the default formatter's progress dots on CI. - args << "--format" << "clang" - end + # Don't show the default formatter's progress dots + # on CI or if only checking a single file. + args << "--format" << "clang" if ENV["CI"] || files.count { |f| !f.directory? } == 1 args << "--color" if Tty.color?