From 07d04dd34849f3094a77bc8b64c37d183d6c20b3 Mon Sep 17 00:00:00 2001 From: Carlo Cabrera <30379873+carlocab@users.noreply.github.com> Date: Mon, 2 Sep 2024 19:50:07 +0800 Subject: [PATCH] dev-cmd/bump: add `--auto` flag This will read from the tap's `.github/autobump.txt` when provided. See discussion at Homebrew/homebrew-core#183126. --- Library/Homebrew/dev-cmd/bump.rb | 21 ++++++++++++++++++- .../sorbet/rbi/dsl/homebrew/dev_cmd/bump.rbi | 3 +++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/bump.rb b/Library/Homebrew/dev-cmd/bump.rb index 2c9986da04..88eb5e392c 100644 --- a/Library/Homebrew/dev-cmd/bump.rb +++ b/Library/Homebrew/dev-cmd/bump.rb @@ -30,6 +30,9 @@ module Homebrew description: "Print formulae/casks with fully-qualified names." switch "--no-pull-requests", description: "Do not retrieve pull requests from GitHub." + switch "--auto", + description: "Read the list of formulae/casks from .github/autobump.txt.", + hidden: true switch "--formula", "--formulae", description: "Check only formulae." switch "--cask", "--casks", @@ -52,6 +55,7 @@ module Homebrew conflicts "--cask", "--formula" conflicts "--tap=", "--installed" conflicts "--eval-all", "--installed" + conflicts "--installed", "--auto" conflicts "--no-pull-requests", "--open-pr" named_args [:formula, :cask], without_api: true @@ -64,7 +68,22 @@ module Homebrew Homebrew.with_no_api_env do eval_all = args.eval_all? || Homebrew::EnvConfig.eval_all? - formulae_and_casks = if args.tap + formulae_and_casks = if args.auto? + tap_arg = args.tap + raise UsageError, "`--tap=` must be passed with `--auto`." if tap_arg.blank? + raise UsageError, "`--formula` or `--cask` must be passed with `--auto`." if !args.formula? && !args.cask? + + tap = Tap.fetch(tap_arg) + autobump_list = tap.path/".github/autobump.txt" + raise UsageError, "No autobump list at .github/autobump.txt found." unless autobump_list.exist? + + autobump_list.readlines(chomp: true).map do |name| + qualified_name = "#{tap.name}/#{name}" + next Cask::CaskLoader.load(qualified_name) if args.cask? + + Formulary.factory(qualified_name) + end + elsif args.tap tap = Tap.fetch(T.must(args.tap)) raise UsageError, "`--tap` cannot be used with official taps." if tap.official? diff --git a/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/bump.rbi b/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/bump.rbi index 6ec2e761a7..a44d6ec955 100644 --- a/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/bump.rbi +++ b/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/bump.rbi @@ -11,6 +11,9 @@ class Homebrew::DevCmd::Bump end class Homebrew::DevCmd::Bump::Args < Homebrew::CLI::Args + sig { returns(T::Boolean) } + def auto?; end + sig { returns(T::Boolean) } def cask?; end