diff --git a/Library/Homebrew/cli_parser.rb b/Library/Homebrew/cli_parser.rb index f9bb03133e..c904e879df 100644 --- a/Library/Homebrew/cli_parser.rb +++ b/Library/Homebrew/cli_parser.rb @@ -94,10 +94,11 @@ module Homebrew @parser.to_s end - def parse(cmdline_args) + def parse(cmdline_args = ARGV) remaining_args = @parser.parse(cmdline_args) check_constraint_violations Homebrew.args[:remaining] = remaining_args + @parser end private diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 39da5d80e5..b8dc3c8742 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -52,8 +52,8 @@ require "cli_parser" module Homebrew module_function - def audit - Homebrew::CLI::Parser.parse do + def audit_args + Homebrew::CLI::Parser.new do banner <<~EOS Usage: brew audit [options] [] @@ -61,6 +61,7 @@ module Homebrew run before submitting a new formula. If no are provided, all of them are checked. + EOS switch "--strict", description: "Run additional style checks, including Rubocop style checks." switch "--online", description: "Run additional slower style checks that require a\nnetwork connection." @@ -76,6 +77,10 @@ module Homebrew switch :verbose switch :debug end + end + + def audit + audit_args.parse Homebrew.auditing = true inject_dump_stats!(FormulaAuditor, /^audit_/) if args.audit_debug? diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb index 26ba126fdd..8c651c93f0 100644 --- a/Library/Homebrew/dev-cmd/bottle.rb +++ b/Library/Homebrew/dev-cmd/bottle.rb @@ -69,8 +69,8 @@ MAXIMUM_STRING_MATCHES = 100 module Homebrew module_function - def bottle - Homebrew::CLI::Parser.parse do + def bottle_args + Homebrew::CLI::Parser.new do switch "--merge" switch "--skip-relocation" switch "--force-core-tap" @@ -84,6 +84,10 @@ module Homebrew switch :debug flag "--root-url" end + end + + def bottle + bottle_args.parse return merge if args.merge? diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index 5dc47299ca..107c4aabe4 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -47,8 +47,8 @@ require "cli_parser" module Homebrew module_function - def bump_formula_pr - Homebrew::CLI::Parser.parse do + def bump_formula_pr_args + Homebrew::CLI::Parser.new do switch "--devel" switch "-n", "--dry-run" switch "--write" @@ -70,6 +70,10 @@ module Homebrew conflicts "--url", "--tag" end + end + + def bump_formula_pr + bump_formula_pr_args.parse # As this command is simplifying user run commands then let's just use a # user path, too. diff --git a/Library/Homebrew/dev-cmd/create.rb b/Library/Homebrew/dev-cmd/create.rb index 0323722bcf..08bb09168e 100644 --- a/Library/Homebrew/dev-cmd/create.rb +++ b/Library/Homebrew/dev-cmd/create.rb @@ -27,9 +27,8 @@ require "cli_parser" module Homebrew module_function - # Create a formula from a tarball URL - def create - Homebrew::CLI::Parser.parse do + def create_args + Homebrew::CLI::Parser.new do switch "--autotools" switch "--cmake" switch "--meson" @@ -42,6 +41,12 @@ module Homebrew flag "--set-version=" flag "--tap=" end + end + + # Create a formula from a tarball URL + def create + create_args.parse + raise UsageError if ARGV.named.empty? # Ensure that the cache exists so we can fetch the tarball diff --git a/Library/Homebrew/dev-cmd/edit.rb b/Library/Homebrew/dev-cmd/edit.rb index 62def730db..c694f054b8 100644 --- a/Library/Homebrew/dev-cmd/edit.rb +++ b/Library/Homebrew/dev-cmd/edit.rb @@ -10,12 +10,16 @@ require "cli_parser" module Homebrew module_function - def edit - Homebrew::CLI::Parser.parse do + def edit_args + Homebrew::CLI::Parser.new do switch :force switch :verbose switch :debug end + end + + def edit + edit_args.parse unless (HOMEBREW_REPOSITORY/".git").directory? raise <<~EOS diff --git a/Library/Homebrew/dev-cmd/formula.rb b/Library/Homebrew/dev-cmd/formula.rb index 71cecdeb5d..15229271bd 100644 --- a/Library/Homebrew/dev-cmd/formula.rb +++ b/Library/Homebrew/dev-cmd/formula.rb @@ -7,11 +7,15 @@ require "cli_parser" module Homebrew module_function - def formula - Homebrew::CLI::Parser.parse do + def formula_args + Homebrew::CLI::Parser.new do switch :debug switch :verbose end + end + + def formula + formula_args.parse raise FormulaUnspecifiedError if ARGV.named.empty? diff --git a/Library/Homebrew/dev-cmd/irb.rb b/Library/Homebrew/dev-cmd/irb.rb index 7f5cd77f15..ca0c9056b2 100644 --- a/Library/Homebrew/dev-cmd/irb.rb +++ b/Library/Homebrew/dev-cmd/irb.rb @@ -22,11 +22,15 @@ end module Homebrew module_function - def irb - Homebrew::CLI::Parser.parse do + def irb_args + Homebrew::CLI::Parser.new do switch "--examples" switch "--pry", env: :pry end + end + + def irb + irb_args.parse if args.examples? puts "'v8'.f # => instance of the v8 formula" diff --git a/Library/Homebrew/dev-cmd/linkage.rb b/Library/Homebrew/dev-cmd/linkage.rb index 2fa90a6a68..a837d9ec47 100644 --- a/Library/Homebrew/dev-cmd/linkage.rb +++ b/Library/Homebrew/dev-cmd/linkage.rb @@ -19,13 +19,17 @@ require "cli_parser" module Homebrew module_function - def linkage - Homebrew::CLI::Parser.parse do + def linkage_args + Homebrew::CLI::Parser.new do switch "--test" switch "--reverse" switch :verbose switch :debug end + end + + def linkage + linkage_args.parse CacheStoreDatabase.use(:linkage) do |db| kegs = if ARGV.kegs.empty? diff --git a/Library/Homebrew/dev-cmd/man.rb b/Library/Homebrew/dev-cmd/man.rb index a6ee8058ca..bc091f4283 100644 --- a/Library/Homebrew/dev-cmd/man.rb +++ b/Library/Homebrew/dev-cmd/man.rb @@ -11,6 +11,7 @@ require "formula" require "erb" require "ostruct" require "cli_parser" +require "dev-cmd/audit" module Homebrew module_function @@ -19,11 +20,15 @@ module Homebrew TARGET_MAN_PATH = HOMEBREW_REPOSITORY/"manpages" TARGET_DOC_PATH = HOMEBREW_REPOSITORY/"docs" - def man - Homebrew::CLI::Parser.parse do + def man_args + Homebrew::CLI::Parser.new do switch "--fail-if-changed" switch "--link" end + end + + def man + man_args.parse raise UsageError unless ARGV.named.empty? @@ -64,7 +69,7 @@ module Homebrew variables = OpenStruct.new variables[:commands] = path_glob_commands("#{HOMEBREW_LIBRARY_PATH}/cmd/*.{rb,sh}") - variables[:developer_commands] = path_glob_commands("#{HOMEBREW_LIBRARY_PATH}/dev-cmd/*.{rb,sh}") + variables[:developer_commands] = [Homebrew.send(:audit_args).summary] + path_glob_commands("#{HOMEBREW_LIBRARY_PATH}/dev-cmd/*.{rb,sh}") readme = HOMEBREW_REPOSITORY/"README.md" variables[:lead_maintainer] = readme.read[/(Homebrew's lead maintainer .*\.)/, 1] diff --git a/Library/Homebrew/dev-cmd/mirror.rb b/Library/Homebrew/dev-cmd/mirror.rb index 763d55092d..d9546a47b6 100644 --- a/Library/Homebrew/dev-cmd/mirror.rb +++ b/Library/Homebrew/dev-cmd/mirror.rb @@ -7,11 +7,15 @@ require "cli_parser" module Homebrew module_function - def mirror - Homebrew::CLI::Parser.parse do + def mirror_args + Homebrew::CLI::Parser.new do switch :debug switch :verbose end + end + + def mirror + mirror_args.parse odie "This command requires at least formula argument!" if ARGV.named.empty? diff --git a/Library/Homebrew/dev-cmd/pull.rb b/Library/Homebrew/dev-cmd/pull.rb index 5001da9181..b531971b7b 100644 --- a/Library/Homebrew/dev-cmd/pull.rb +++ b/Library/Homebrew/dev-cmd/pull.rb @@ -72,10 +72,8 @@ end module Homebrew module_function - def pull - odie "You meant `git pull --rebase`." if ARGV[0] == "--rebase" - - Homebrew::CLI::Parser.parse do + def pull_args + Homebrew::CLI::Parser.new do switch "--bottle" switch "--bump" switch "--clean" @@ -90,6 +88,12 @@ module Homebrew flag "--bintray-org=" flag "--test-bot-user=" end + end + + def pull + odie "You meant `git pull --rebase`." if ARGV[0] == "--rebase" + + pull_args.parse if ARGV.named.empty? odie "This command requires at least one argument containing a URL or pull request number" diff --git a/Library/Homebrew/dev-cmd/release-notes.rb b/Library/Homebrew/dev-cmd/release-notes.rb index 1a6616e9a5..b2a3140464 100644 --- a/Library/Homebrew/dev-cmd/release-notes.rb +++ b/Library/Homebrew/dev-cmd/release-notes.rb @@ -10,10 +10,13 @@ require "cli_parser" module Homebrew module_function - def release_notes - Homebrew::CLI::Parser.parse do + def release_notes_args + Homebrew::CLI::Parser.new do switch "--markdown" end + end + def release_notes + release_notes_args.parse previous_tag = ARGV.named.first previous_tag ||= Utils.popen_read( diff --git a/Library/Homebrew/dev-cmd/tap-new.rb b/Library/Homebrew/dev-cmd/tap-new.rb index 1be9f17640..7dad2c5da0 100644 --- a/Library/Homebrew/dev-cmd/tap-new.rb +++ b/Library/Homebrew/dev-cmd/tap-new.rb @@ -15,11 +15,15 @@ module Homebrew path.write content end - def tap_new - Homebrew::CLI::Parser.parse do + def tap_new_args + Homebrew::CLI::Parser.new do switch :debug switch :verbose end + end + + def tap_new + tap_new_args.parse raise "A tap argument is required" if ARGV.named.empty? diff --git a/Library/Homebrew/dev-cmd/tests.rb b/Library/Homebrew/dev-cmd/tests.rb index 8b13301e95..1490eeabff 100644 --- a/Library/Homebrew/dev-cmd/tests.rb +++ b/Library/Homebrew/dev-cmd/tests.rb @@ -21,8 +21,8 @@ require "fileutils" module Homebrew module_function - def tests - Homebrew::CLI::Parser.parse do + def tests_args + Homebrew::CLI::Parser.new do switch "--no-compat" switch "--generic" switch "--coverage" @@ -32,6 +32,9 @@ module Homebrew flag "--only=" flag "--seed=" end + end + def tests + tests_args.parse HOMEBREW_LIBRARY_PATH.cd do ENV.delete("HOMEBREW_COLOR") diff --git a/Library/Homebrew/dev-cmd/update-test.rb b/Library/Homebrew/dev-cmd/update-test.rb index 072abdcca3..0b8e803133 100644 --- a/Library/Homebrew/dev-cmd/update-test.rb +++ b/Library/Homebrew/dev-cmd/update-test.rb @@ -19,8 +19,8 @@ require "cli_parser" module Homebrew module_function - def update_test - Homebrew::CLI::Parser.parse do + def update_test_args + Homebrew::CLI::Parser.new do switch "--to-tag" switch "--keep-tmp" switch :verbose @@ -28,6 +28,10 @@ module Homebrew flag "--commit=" flag "--before=" end + end + + def update_test + update_test_args.parse ENV["HOMEBREW_UPDATE_TEST"] = "1"