Parse named args from formula stubs
This commit is contained in:
parent
02947ea4ed
commit
c0df920660
@ -80,9 +80,11 @@ module Homebrew
|
|||||||
@to_formulae_and_casks ||= T.let(
|
@to_formulae_and_casks ||= T.let(
|
||||||
{}, T.nilable(T::Hash[T.nilable(Symbol), T::Array[T.any(Formula, Keg, Cask::Cask)]])
|
{}, T.nilable(T::Hash[T.nilable(Symbol), T::Array[T.any(Formula, Keg, Cask::Cask)]])
|
||||||
)
|
)
|
||||||
@to_formulae_and_casks[only] ||= downcased_unique_named.flat_map do |name|
|
@to_formulae_and_casks[only] ||= begin
|
||||||
options = { warn: }.compact
|
download_queue = Homebrew::DownloadQueue.new if Homebrew::EnvConfig.download_concurrency > 1
|
||||||
load_formula_or_cask(name, only:, method:, **options)
|
|
||||||
|
formulae_and_casks = downcased_unique_named.flat_map do |name|
|
||||||
|
load_and_fetch_full_formula_or_cask(name, only:, method:, warn:, download_queue:)
|
||||||
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
rescue FormulaUnreadableError, FormulaClassUnavailableError,
|
||||||
TapFormulaUnreadableError, TapFormulaClassUnavailableError,
|
TapFormulaUnreadableError, TapFormulaClassUnavailableError,
|
||||||
Cask::CaskUnreadableError
|
Cask::CaskUnreadableError
|
||||||
@ -91,6 +93,15 @@ module Homebrew
|
|||||||
raise
|
raise
|
||||||
rescue NoSuchKegError, FormulaUnavailableError, Cask::CaskUnavailableError, FormulaOrCaskUnavailableError
|
rescue NoSuchKegError, FormulaUnavailableError, Cask::CaskUnavailableError, FormulaOrCaskUnavailableError
|
||||||
ignore_unavailable ? [] : raise
|
ignore_unavailable ? [] : raise
|
||||||
|
end
|
||||||
|
|
||||||
|
download_queue&.fetch
|
||||||
|
|
||||||
|
formulae_and_casks.map do |formula_or_cask|
|
||||||
|
next formula_or_cask unless formula_or_cask.is_a?(Formula)
|
||||||
|
|
||||||
|
formula_or_cask.fully_loaded_formula
|
||||||
|
end
|
||||||
end.freeze
|
end.freeze
|
||||||
|
|
||||||
if uniq
|
if uniq
|
||||||
@ -152,11 +163,23 @@ module Homebrew
|
|||||||
T::Array[T.any(Formula, Keg, Cask::Cask, T::Array[Keg], FormulaOrCaskUnavailableError)],
|
T::Array[T.any(Formula, Keg, Cask::Cask, T::Array[Keg], FormulaOrCaskUnavailableError)],
|
||||||
]),
|
]),
|
||||||
)
|
)
|
||||||
@to_formulae_casks_unknowns[method] = downcased_unique_named.map do |name|
|
@to_formulae_casks_unknowns[method] = begin
|
||||||
load_formula_or_cask(name, only:, method:)
|
download_queue = Homebrew::DownloadQueue.new if Homebrew::EnvConfig.download_concurrency > 1
|
||||||
|
|
||||||
|
formulae_and_casks = downcased_unique_named.map do |name|
|
||||||
|
load_and_fetch_full_formula_or_cask(name, only:, method:, download_queue:)
|
||||||
rescue FormulaOrCaskUnavailableError => e
|
rescue FormulaOrCaskUnavailableError => e
|
||||||
e
|
e
|
||||||
end.uniq.freeze
|
end.uniq
|
||||||
|
|
||||||
|
download_queue&.fetch
|
||||||
|
|
||||||
|
formulae_and_casks.map do |formula_or_cask|
|
||||||
|
next formula_or_cask unless formula_or_cask.is_a?(Formula)
|
||||||
|
|
||||||
|
formula_or_cask.fully_loaded_formula
|
||||||
|
end
|
||||||
|
end.freeze
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { params(uniq: T::Boolean).returns(T::Array[Formula]) }
|
sig { params(uniq: T::Boolean).returns(T::Array[Formula]) }
|
||||||
@ -314,6 +337,17 @@ module Homebrew
|
|||||||
end.uniq
|
end.uniq
|
||||||
end
|
end
|
||||||
|
|
||||||
|
sig {
|
||||||
|
params(name: String, only: T.nilable(Symbol), method: T.nilable(Symbol), warn: T.nilable(T::Boolean),
|
||||||
|
download_queue: T.nilable(Homebrew::DownloadQueue))
|
||||||
|
.returns(T.any(Formula, Keg, Cask::Cask, T::Array[Keg]))
|
||||||
|
}
|
||||||
|
def load_and_fetch_full_formula_or_cask(name, only: nil, method: nil, warn: nil, download_queue: nil)
|
||||||
|
formula_or_cask = load_formula_or_cask(name, only:, method:, warn:)
|
||||||
|
formula_or_cask.fetch_fully_loaded_formula!(download_queue:) if formula_or_cask.is_a?(Formula)
|
||||||
|
formula_or_cask
|
||||||
|
end
|
||||||
|
|
||||||
sig {
|
sig {
|
||||||
params(name: String, only: T.nilable(Symbol), method: T.nilable(Symbol), warn: T.nilable(T::Boolean))
|
params(name: String, only: T.nilable(Symbol), method: T.nilable(Symbol), warn: T.nilable(T::Boolean))
|
||||||
.returns(T.any(Formula, Keg, Cask::Cask, T::Array[Keg]))
|
.returns(T.any(Formula, Keg, Cask::Cask, T::Array[Keg]))
|
||||||
@ -326,8 +360,8 @@ module Homebrew
|
|||||||
begin
|
begin
|
||||||
case method
|
case method
|
||||||
when nil, :factory
|
when nil, :factory
|
||||||
options = { warn:, force_bottle: @force_bottle, flags: @flags }.compact
|
Formulary.factory(name, *@override_spec,
|
||||||
Formulary.factory(name, *@override_spec, **options)
|
warn:, force_bottle: @force_bottle, flags: @flags, prefer_stub: true)
|
||||||
when :resolve
|
when :resolve
|
||||||
resolve_formula(name)
|
resolve_formula(name)
|
||||||
when :latest_kegs
|
when :latest_kegs
|
||||||
@ -447,7 +481,7 @@ module Homebrew
|
|||||||
|
|
||||||
sig { params(name: String).returns(Formula) }
|
sig { params(name: String).returns(Formula) }
|
||||||
def resolve_formula(name)
|
def resolve_formula(name)
|
||||||
Formulary.resolve(name, **{ spec: @override_spec, force_bottle: @force_bottle, flags: @flags }.compact)
|
Formulary.resolve(name, spec: @override_spec, force_bottle: @force_bottle, flags: @flags, prefer_stub: true)
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { params(name: String).returns([Pathname, T::Array[Keg]]) }
|
sig { params(name: String).returns([Pathname, T::Array[Keg]]) }
|
||||||
|
@ -733,7 +733,7 @@ module Homebrew
|
|||||||
next if arg.match?(HOMEBREW_CASK_TAP_CASK_REGEX)
|
next if arg.match?(HOMEBREW_CASK_TAP_CASK_REGEX)
|
||||||
|
|
||||||
begin
|
begin
|
||||||
Formulary.factory(arg, spec, flags: argv.select { |a| a.start_with?("--") })
|
Formulary.factory(arg, spec, flags: argv.select { |a| a.start_with?("--") }, prefer_stub: true)
|
||||||
rescue FormulaUnavailableError, FormulaSpecificationError
|
rescue FormulaUnavailableError, FormulaSpecificationError
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user