diff --git a/Library/Homebrew/cli_parser.rb b/Library/Homebrew/cli_parser.rb index 64b1eba481052b608fce4a20ca12701e26fe4bd9..56ca66be3156c14f673bc0bf7fdf225f2aba4c36 100644 --- a/Library/Homebrew/cli_parser.rb +++ b/Library/Homebrew/cli_parser.rb @@ -110,7 +110,7 @@ module Homebrew if name.length == 1 "-#{name}" else - "--#{name}" + "--#{name.tr("_", "-")}" end end diff --git a/Library/Homebrew/cmd/style.rb b/Library/Homebrew/cmd/style.rb index 163d43e8879be00489a84e81a17334e750eaab98..d09a362f6fad87b86f60ef889e2936ef7b88be13 100644 --- a/Library/Homebrew/cmd/style.rb +++ b/Library/Homebrew/cmd/style.rb @@ -20,11 +20,41 @@ require "json" require "open3" require "style" +require "cli_parser" module Homebrew module_function + def style_args + Homebrew::CLI::Parser.new do + usage_banner <<~EOS + `style` [<options>] [<files>|<taps>|<formulae>] + + Check formulae or files for conformance to Homebrew style guidelines. + + Lists of <files>, <taps> and <formulae> may not be combined. If none are + provided, `style` will run style checks on the whole Homebrew library, + including core code and all formulae. + EOS + switch "--fix", + description: "Fix style violations automatically using RuboCop's auto-correct feature." + switch "--display-cop-names", + description: "Include the RuboCop cop name for each violation in the output." + comma_array "--only-cops", + description: "Specify a comma-separated <cops> list to check for violations of only the "\ + "listed RuboCop cops." + comma_array "--except-cops", + description: "Specify a comma-separated <cops> list to skip checking for violations of the "\ + "listed RuboCop cops." + switch :verbose + switch :debug + conflicts "--only-cops", "--except-cops" + end + end + def style + style_args.parse + target = if ARGV.named.empty? nil elsif ARGV.named.any? { |file| File.exist? file } @@ -35,18 +65,15 @@ module Homebrew ARGV.formulae.map(&:path) end - only_cops = ARGV.value("only-cops").to_s.split(",") - except_cops = ARGV.value("except-cops").to_s.split(",") - if !only_cops.empty? && !except_cops.empty? - odie "--only-cops and --except-cops cannot be used simultaneously!" - end + only_cops = args.only_cops + except_cops = args.except_cops - options = { fix: ARGV.flag?("--fix") } - if !only_cops.empty? + options = { fix: args.fix? } + if only_cops options[:only_cops] = only_cops - elsif !except_cops.empty? + elsif except_cops options[:except_cops] = except_cops - elsif only_cops.empty? && except_cops.empty? + elsif only_cops.nil? && except_cops.nil? options[:except_cops] = %w[FormulaAudit FormulaAuditStrict NewFormulaAudit]