From e3ac94fc5dee89a4037e2b857be2dbce67adeb57 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Wed, 4 Mar 2020 17:28:24 +0000 Subject: [PATCH] dev-cmd: use more and cleanup new args APIs. --- Library/Homebrew/dev-cmd/audit.rb | 6 +++--- Library/Homebrew/dev-cmd/bottle.rb | 11 ++++------- Library/Homebrew/dev-cmd/bump-formula-pr.rb | 14 +++++++------- Library/Homebrew/dev-cmd/bump-revision.rb | 4 ++-- Library/Homebrew/dev-cmd/create.rb | 6 ++---- Library/Homebrew/dev-cmd/edit.rb | 6 +++--- Library/Homebrew/dev-cmd/extract.rb | 13 +++++-------- Library/Homebrew/dev-cmd/formula.rb | 5 ++--- Library/Homebrew/dev-cmd/linkage.rb | 4 ++-- Library/Homebrew/dev-cmd/mirror.rb | 5 ++--- Library/Homebrew/dev-cmd/pull.rb | 7 ++----- Library/Homebrew/dev-cmd/release-notes.rb | 4 ++-- Library/Homebrew/dev-cmd/tap-new.rb | 6 ++---- Library/Homebrew/dev-cmd/test.rb | 19 +++++++++---------- 14 files changed, 47 insertions(+), 63 deletions(-) diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index ae3332c2db..fef89d6966 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -79,12 +79,12 @@ module Homebrew ENV.activate_extensions! ENV.setup_build_environment - if Homebrew.args.named.blank? + if args.no_named? ff = Formula files = Tap.map(&:formula_dir) else - ff = Homebrew.args.resolved_formulae - files = Homebrew.args.resolved_formulae.map(&:path) + ff = args.resolved_formulae + files = args.resolved_formulae.map(&:path) end only_cops = args.only_cops diff --git a/Library/Homebrew/dev-cmd/bottle.rb b/Library/Homebrew/dev-cmd/bottle.rb index 43d3ddd59f..2a57961de1 100644 --- a/Library/Homebrew/dev-cmd/bottle.rb +++ b/Library/Homebrew/dev-cmd/bottle.rb @@ -79,6 +79,7 @@ module Homebrew switch :verbose switch :debug conflicts "--no-rebuild", "--keep-old" + min_named 1 end end @@ -86,10 +87,9 @@ module Homebrew bottle_args.parse return merge if args.merge? - raise KegUnspecifiedError if args.remaining.empty? ensure_relocation_formulae_installed! unless args.skip_relocation? - Homebrew.args.resolved_formulae.each do |f| + args.resolved_formulae.each do |f| bottle_formula f end end @@ -435,10 +435,7 @@ module Homebrew end def merge - write = args.write? - raise UsageError, "--merge requires a JSON file path argument" if Homebrew.args.named.blank? - - bottles_hash = Homebrew.args.named.reduce({}) do |hash, json_file| + bottles_hash = args.named.reduce({}) do |hash, json_file| hash.deep_merge(JSON.parse(IO.read(json_file))) do |key, first, second| if key == "cellar" # Prioritize HOMEBREW_CELLAR over :any over :any_skip_relocation @@ -478,7 +475,7 @@ module Homebrew output = bottle_output bottle - if write + if args.write? path = Pathname.new((HOMEBREW_REPOSITORY/bottle_hash["formula"]["path"]).to_s) update_or_add = nil diff --git a/Library/Homebrew/dev-cmd/bump-formula-pr.rb b/Library/Homebrew/dev-cmd/bump-formula-pr.rb index a29e7c0142..fb73eb3e68 100644 --- a/Library/Homebrew/dev-cmd/bump-formula-pr.rb +++ b/Library/Homebrew/dev-cmd/bump-formula-pr.rb @@ -116,7 +116,7 @@ module Homebrew # Use the user's browser, too. ENV["BROWSER"] = ENV["HOMEBREW_BROWSER"] - formula = Homebrew.args.formulae.first + formula = args.formulae.first if formula tap_full_name, origin_branch, previous_branch = use_correct_linux_tap(formula) @@ -315,7 +315,7 @@ module Homebrew new_formula_version = formula_version(formula, requested_spec, new_contents) if !new_mirrors && !formula_spec.mirrors.empty? - if Homebrew.args.force? + if args.force? opoo "#{formula}: Removing all mirrors because a --mirror= argument was not specified." else odie <<~EOS @@ -433,7 +433,7 @@ module Homebrew contents = path.open("r") { |f| Formulary.ensure_utf8_encoding(f).read } contents.extend(StringInreplaceExtension) replacement_pairs.each do |old, new| - ohai "replace #{old.inspect} with #{new.inspect}" unless Homebrew.args.quiet? + ohai "replace #{old.inspect} with #{new.inspect}" unless args.quiet? raise "No old value for new value #{new}! Did you pass the wrong arguments?" unless old contents.gsub!(old, new) @@ -445,7 +445,7 @@ module Homebrew else Utils::Inreplace.inreplace(path) do |s| replacement_pairs.each do |old, new| - ohai "replace #{old.inspect} with #{new.inspect}" unless Homebrew.args.quiet? + ohai "replace #{old.inspect} with #{new.inspect}" unless args.quiet? raise "No old value for new value #{new}! Did you pass the wrong arguments?" unless old s.gsub!(old, new) @@ -485,11 +485,11 @@ module Homebrew #{pull_requests.map { |pr| "#{pr["title"]} #{pr["html_url"]}" }.join("\n")} EOS error_message = "Duplicate PRs should not be opened. Use --force to override this error." - if Homebrew.args.force? && !Homebrew.args.quiet? + if args.force? && !args.quiet? opoo duplicates_message - elsif !Homebrew.args.force? && Homebrew.args.quiet? + elsif !args.force? && args.quiet? odie error_message - elsif !Homebrew.args.force? + elsif !args.force? odie <<~EOS #{duplicates_message.chomp} #{error_message} diff --git a/Library/Homebrew/dev-cmd/bump-revision.rb b/Library/Homebrew/dev-cmd/bump-revision.rb index 8c186fe47a..779da77784 100644 --- a/Library/Homebrew/dev-cmd/bump-revision.rb +++ b/Library/Homebrew/dev-cmd/bump-revision.rb @@ -33,7 +33,7 @@ module Homebrew # user path, too. ENV["PATH"] = ENV["HOMEBREW_PATH"] - formulae = Homebrew.args.formulae + formulae = args.formulae raise FormulaUnspecifiedError if formulae.empty? formula = formulae.first @@ -64,7 +64,7 @@ module Homebrew end if args.dry_run? - ohai "replace #{old.inspect} with #{replacement.inspect}" unless Homebrew.args.quiet? + ohai "replace #{old.inspect} with #{replacement.inspect}" unless args.quiet? else Utils::Inreplace.inreplace(formula.path) do |s| s.gsub!(old, replacement) diff --git a/Library/Homebrew/dev-cmd/create.rb b/Library/Homebrew/dev-cmd/create.rb index c3e4c660ac..77fa86246f 100644 --- a/Library/Homebrew/dev-cmd/create.rb +++ b/Library/Homebrew/dev-cmd/create.rb @@ -49,7 +49,7 @@ module Homebrew switch :verbose switch :debug conflicts "--autotools", "--cmake", "--go", "--meson", "--perl", "--python", "--rust" - max_named 1 + named 1 end end @@ -57,12 +57,10 @@ module Homebrew def create create_args.parse - raise UsageError if ARGV.named.empty? - # Ensure that the cache exists so we can fetch the tarball HOMEBREW_CACHE.mkpath - url = ARGV.named.first # Pull the first (and only) url from ARGV + url = args.named.first # Pull the first (and only) url from ARGV version = args.set_version name = args.set_name diff --git a/Library/Homebrew/dev-cmd/edit.rb b/Library/Homebrew/dev-cmd/edit.rb index ba2495c319..30d63101f6 100644 --- a/Library/Homebrew/dev-cmd/edit.rb +++ b/Library/Homebrew/dev-cmd/edit.rb @@ -32,10 +32,10 @@ module Homebrew end # If no brews are listed, open the project root in an editor. - paths = [HOMEBREW_REPOSITORY] if ARGV.named.empty? + paths = [HOMEBREW_REPOSITORY] if args.no_named? - # Don't use ARGV.formulae as that will throw if the file doesn't parse - paths ||= ARGV.named.map do |name| + # Don't use args.formulae as that will throw if the file doesn't parse + paths ||= args.named.map do |name| path = Formulary.path(name) raise FormulaUnavailableError, name if !path.file? && !args.force? diff --git a/Library/Homebrew/dev-cmd/extract.rb b/Library/Homebrew/dev-cmd/extract.rb index df9c41b2ee..76af1c4a3e 100644 --- a/Library/Homebrew/dev-cmd/extract.rb +++ b/Library/Homebrew/dev-cmd/extract.rb @@ -91,18 +91,15 @@ module Homebrew description: "Extract the specified of instead of the most recent." switch :force switch :debug - max_named 2 + named 2 end end def extract extract_args.parse - # Expect exactly two named arguments: formula and tap - raise UsageError, "This command requires formula and tap arguments" if args.remaining.length != 2 - - if args.remaining.first !~ HOMEBREW_TAP_FORMULA_REGEX - name = args.remaining.first.downcase + if args.named.first !~ HOMEBREW_TAP_FORMULA_REGEX + name = args.named.first.downcase source_tap = CoreTap.instance else name = Regexp.last_match(3).downcase @@ -110,7 +107,7 @@ module Homebrew raise TapFormulaUnavailableError.new(source_tap, name) unless source_tap.installed? end - destination_tap = Tap.fetch(args.remaining.second) + destination_tap = Tap.fetch(args.named.second) unless ARGV.homebrew_developer? odie "Cannot extract formula to homebrew/core!" if destination_tap.core_tap? odie "Cannot extract formula to the same tap!" if destination_tap == source_tap @@ -190,7 +187,7 @@ module Homebrew path = destination_tap.path/"Formula/#{name}@#{version}.rb" if path.exist? - unless Homebrew.args.force? + unless args.force? odie <<~EOS Destination formula already exists: #{path} To overwrite it and continue anyways, run: diff --git a/Library/Homebrew/dev-cmd/formula.rb b/Library/Homebrew/dev-cmd/formula.rb index b018489e6d..8776a7ef4d 100644 --- a/Library/Homebrew/dev-cmd/formula.rb +++ b/Library/Homebrew/dev-cmd/formula.rb @@ -15,14 +15,13 @@ module Homebrew EOS switch :verbose switch :debug + min_named :formula end end def formula formula_args.parse - raise FormulaUnspecifiedError if Homebrew.args.named.blank? - - Homebrew.args.resolved_formulae.each { |f| puts f.path } + args.resolved_formulae.each { |f| puts f.path } end end diff --git a/Library/Homebrew/dev-cmd/linkage.rb b/Library/Homebrew/dev-cmd/linkage.rb index 64420fab60..ddd542c94d 100644 --- a/Library/Homebrew/dev-cmd/linkage.rb +++ b/Library/Homebrew/dev-cmd/linkage.rb @@ -33,10 +33,10 @@ module Homebrew linkage_args.parse CacheStoreDatabase.use(:linkage) do |db| - kegs = if Homebrew.args.kegs.empty? + kegs = if args.kegs.empty? Formula.installed.map(&:opt_or_installed_prefix_keg).reject(&:nil?) else - Homebrew.args.kegs + args.kegs end kegs.each do |keg| ohai "Checking #{keg.name} linkage" if kegs.size > 1 diff --git a/Library/Homebrew/dev-cmd/mirror.rb b/Library/Homebrew/dev-cmd/mirror.rb index d042367d4b..d7bf5b512c 100644 --- a/Library/Homebrew/dev-cmd/mirror.rb +++ b/Library/Homebrew/dev-cmd/mirror.rb @@ -15,19 +15,18 @@ module Homebrew switch :verbose switch :debug hide_from_man_page! + min_named :formula end end def mirror mirror_args.parse - raise FormulaUnspecifiedError if args.remaining.empty? - bintray_user = ENV["HOMEBREW_BINTRAY_USER"] bintray_key = ENV["HOMEBREW_BINTRAY_KEY"] raise "Missing HOMEBREW_BINTRAY_USER or HOMEBREW_BINTRAY_KEY variables!" if !bintray_user || !bintray_key - Homebrew.args.formulae.each do |f| + args.formulae.each do |f| bintray_package = Utils::Bottles::Bintray.package f.name bintray_repo_url = "https://api.bintray.com/packages/homebrew/mirror" package_url = "#{bintray_repo_url}/#{bintray_package}" diff --git a/Library/Homebrew/dev-cmd/pull.rb b/Library/Homebrew/dev-cmd/pull.rb index 93505328e5..e9f01620c8 100644 --- a/Library/Homebrew/dev-cmd/pull.rb +++ b/Library/Homebrew/dev-cmd/pull.rb @@ -62,6 +62,7 @@ module Homebrew description: "Pull the bottle block commit from the specified on GitHub." switch :verbose switch :debug + min_named 1 end end @@ -70,10 +71,6 @@ module Homebrew pull_args.parse - if ARGV.named.empty? - raise UsageError, "This command requires at least one argument containing a URL or pull request number" - end - # Passthrough Git environment variables for e.g. git am ENV["GIT_COMMITTER_NAME"] = ENV["HOMEBREW_GIT_NAME"] if ENV["HOMEBREW_GIT_NAME"] ENV["GIT_COMMITTER_EMAIL"] = ENV["HOMEBREW_GIT_EMAIL"] if ENV["HOMEBREW_GIT_EMAIL"] @@ -96,7 +93,7 @@ module Homebrew tap = nil - ARGV.named.each do |arg| + args.named.each do |arg| arg = "#{CoreTap.instance.default_remote}/pull/#{arg}" if arg.to_i.positive? if (testing_match = arg.match %r{/job/Homebrew.*Testing/(\d+)}) tap = ARGV.value("tap") diff --git a/Library/Homebrew/dev-cmd/release-notes.rb b/Library/Homebrew/dev-cmd/release-notes.rb index 5a806e4906..fa537cf096 100644 --- a/Library/Homebrew/dev-cmd/release-notes.rb +++ b/Library/Homebrew/dev-cmd/release-notes.rb @@ -23,13 +23,13 @@ module Homebrew def release_notes release_notes_args.parse - previous_tag = ARGV.named.first + previous_tag = args.named.first previous_tag ||= Utils.popen_read( "git", "-C", HOMEBREW_REPOSITORY, "tag", "--list", "--sort=-version:refname" ).lines.first.chomp odie "Could not find any previous tags!" unless previous_tag - end_ref = ARGV.named.second || "origin/master" + end_ref = args.named.second || "origin/master" [previous_tag, end_ref].each do |ref| next if quiet_system "git", "-C", HOMEBREW_REPOSITORY, "rev-parse", "--verify", "--quiet", ref diff --git a/Library/Homebrew/dev-cmd/tap-new.rb b/Library/Homebrew/dev-cmd/tap-new.rb index 5c4cf97e19..5fb9dc4127 100644 --- a/Library/Homebrew/dev-cmd/tap-new.rb +++ b/Library/Homebrew/dev-cmd/tap-new.rb @@ -15,16 +15,14 @@ module Homebrew EOS switch :verbose switch :debug - max_named 1 + named 1 end end def tap_new tap_new_args.parse - raise UsageError, "This command requires a tap argument" if ARGV.named.empty? - - tap = Tap.fetch(ARGV.named.first) + tap = Tap.fetch(args.named.first) titleized_user = tap.user.dup titleized_repo = tap.repo.dup titleized_user[0] = titleized_user[0].upcase diff --git a/Library/Homebrew/dev-cmd/test.rb b/Library/Homebrew/dev-cmd/test.rb index 321ea3e2c6..1874c985d4 100644 --- a/Library/Homebrew/dev-cmd/test.rb +++ b/Library/Homebrew/dev-cmd/test.rb @@ -28,17 +28,16 @@ module Homebrew switch :verbose switch :debug conflicts "--devel", "--HEAD" + min_named :formula end end def test test_args.parse - raise FormulaUnspecifiedError if ARGV.named.empty? - require "formula_assertions" - Homebrew.args.resolved_formulae.each do |f| + args.resolved_formulae.each do |f| # Cannot test uninstalled formulae unless f.latest_version_installed? ofail "Testing requires the latest version of #{f.full_name}" @@ -52,7 +51,7 @@ module Homebrew end # Don't test unlinked formulae - if !Homebrew.args.force? && !f.keg_only? && !f.linked? + if !args.force? && !f.keg_only? && !f.linked? ofail "#{f.full_name} is not linked" next end @@ -75,19 +74,19 @@ module Homebrew env = ENV.to_hash begin - args = %W[ + exec_args = %W[ #{RUBY_PATH} -W0 -I #{$LOAD_PATH.join(File::PATH_SEPARATOR)} -- #{HOMEBREW_LIBRARY_PATH}/test.rb #{f.path} - ].concat(Homebrew.args.options_only) + ].concat(args.options_only) if f.head? - args << "--HEAD" + exec_args << "--HEAD" elsif f.devel? - args << "--devel" + exec_args << "--devel" end Utils.safe_fork do @@ -102,9 +101,9 @@ module Homebrew sandbox.allow_write_path(HOMEBREW_PREFIX/"var/homebrew/locks") sandbox.allow_write_path(HOMEBREW_PREFIX/"var/log") sandbox.allow_write_path(HOMEBREW_PREFIX/"var/run") - sandbox.exec(*args) + sandbox.exec(*exec_args) else - exec(*args) + exec(*exec_args) end end rescue Exception => e # rubocop:disable Lint/RescueException