diff --git a/Library/Homebrew/dev-cmd/bump.rb b/Library/Homebrew/dev-cmd/bump.rb index 8e4245a91a..3eace29742 100644 --- a/Library/Homebrew/dev-cmd/bump.rb +++ b/Library/Homebrew/dev-cmd/bump.rb @@ -33,6 +33,8 @@ module Homebrew switch "--auto", description: "Read the list of formulae/casks from the tap autobump list.", hidden: true + switch "--no-auto", + description: "Ignore formulae/casks in autobump list (official repositories only)." switch "--formula", "--formulae", description: "Check only formulae." switch "--cask", "--casks", @@ -54,6 +56,7 @@ module Homebrew conflicts "--cask", "--formula" conflicts "--tap=", "--installed" + conflicts "--tap=", "--no-auto" conflicts "--eval-all", "--installed" conflicts "--installed", "--auto" conflicts "--no-pull-requests", "--open-pr" @@ -68,6 +71,16 @@ module Homebrew Homebrew.with_no_api_env do eval_all = args.eval_all? || Homebrew::EnvConfig.eval_all? + excluded_autobump = [] + if args.no_auto? + if eval_all || args.formula? + excluded_autobump.concat autobumped_formulae_or_casks Tap.fetch("homebrew/core") + end + if eval_all || args.cask? + excluded_autobump.concat autobumped_formulae_or_casks Tap.fetch("homebrew/cask"), casks: true + end + end + formulae_and_casks = if args.auto? raise UsageError, "`--formula` or `--cask` must be passed with `--auto`." if !args.formula? && !args.cask? @@ -119,6 +132,8 @@ module Homebrew formula_or_cask.respond_to?(:token) ? formula_or_cask.token : formula_or_cask.name end + formulae_and_casks.delete_if { |f_or_c| excluded_autobump.include?(f_or_c) } + if args.repology? && !Utils::Curl.curl_supports_tls13? begin ensure_formula_installed!("curl", reason: "Repology queries") unless HOMEBREW_BREWED_CURL_PATH.exist? @@ -541,6 +556,17 @@ module Homebrew synced_with end + + sig { params(tap: Tap, casks: T::Boolean).returns(T::Array[T.any(Formula, Cask::Cask)]) } + def autobumped_formulae_or_casks(tap, casks: false) + autobump_list = tap.autobump + autobump_list.map do |name| + qualified_name = "#{tap.name}/#{name}" + next Cask::CaskLoader.load(qualified_name) if casks + + Formulary.factory(qualified_name) + end + end end end end 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 1e750628c4..8a7501c9f3 100644 --- a/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/bump.rbi +++ b/Library/Homebrew/sorbet/rbi/dsl/homebrew/dev_cmd/bump.rbi @@ -14,6 +14,12 @@ class Homebrew::DevCmd::Bump::Args < Homebrew::CLI::Args sig { returns(T::Boolean) } def auto?; end + # `/opt/homebrew/Library/Homebrew/vendor/bundle/ruby/3.3.0/bin/tapioca dsl Homebrew::DevCmd::Bump` + # didn't work for me for some reason, adding `no_auto?` flag manually. + # If you can help me with fixing the issue or `tapioca` runs perfectly, please, override this + sig { returns(T::Boolean) } + def no_auto?; end + sig { returns(T::Boolean) } def cask?; end