mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
cmd/deps: add --os
and --arch
Signed-off-by: Michael Cho <michael@michaelcho.dev>
This commit is contained in:
parent
8810b7f041
commit
77a16c2e15
@ -66,6 +66,10 @@ module Homebrew
|
||||
"debugging the `--installed`/`--eval-all` display mode."
|
||||
switch "--HEAD",
|
||||
description: "Show dependencies for HEAD version instead of stable version."
|
||||
flag "--os=",
|
||||
description: "Show dependencies for the given operating system."
|
||||
flag "--arch=",
|
||||
description: "Show dependencies for the given CPU architecture."
|
||||
switch "--formula", "--formulae",
|
||||
description: "Treat all named arguments as formulae."
|
||||
switch "--cask", "--casks",
|
||||
@ -82,28 +86,72 @@ module Homebrew
|
||||
|
||||
sig { override.void }
|
||||
def run
|
||||
raise UsageError, "`brew deps --os=all` is not supported" if args.os == "all"
|
||||
raise UsageError, "`brew deps --arch=all` is not supported" if args.arch == "all"
|
||||
|
||||
os, arch = T.must(args.os_arch_combinations.first)
|
||||
all = args.eval_all?
|
||||
|
||||
Formulary.enable_factory_cache!
|
||||
|
||||
recursive = !args.direct?
|
||||
installed = args.installed? || dependents(args.named.to_formulae_and_casks).all?(&:any_version_installed?)
|
||||
SimulateSystem.with(os:, arch:) do
|
||||
recursive = !args.direct?
|
||||
installed = args.installed? || dependents(args.named.to_formulae_and_casks).all?(&:any_version_installed?)
|
||||
|
||||
@use_runtime_dependencies = installed && recursive &&
|
||||
!args.tree? &&
|
||||
!args.graph? &&
|
||||
!args.HEAD? &&
|
||||
!args.include_build? &&
|
||||
!args.include_test? &&
|
||||
!args.include_optional? &&
|
||||
!args.skip_recommended? &&
|
||||
!args.missing?
|
||||
@use_runtime_dependencies = installed && recursive &&
|
||||
!args.tree? &&
|
||||
!args.graph? &&
|
||||
!args.HEAD? &&
|
||||
!args.include_build? &&
|
||||
!args.include_test? &&
|
||||
!args.include_optional? &&
|
||||
!args.skip_recommended? &&
|
||||
!args.missing? &&
|
||||
args.os.nil? &&
|
||||
args.arch.nil?
|
||||
|
||||
if args.tree? || args.graph?
|
||||
dependents = if args.named.present?
|
||||
sorted_dependents(args.named.to_formulae_and_casks)
|
||||
elsif args.installed?
|
||||
case args.only_formula_or_cask
|
||||
if args.tree? || args.graph?
|
||||
dependents = if args.named.present?
|
||||
sorted_dependents(args.named.to_formulae_and_casks)
|
||||
elsif args.installed?
|
||||
case args.only_formula_or_cask
|
||||
when :formula
|
||||
sorted_dependents(Formula.installed)
|
||||
when :cask
|
||||
sorted_dependents(Cask::Caskroom.casks)
|
||||
else
|
||||
sorted_dependents(Formula.installed + Cask::Caskroom.casks)
|
||||
end
|
||||
else
|
||||
raise FormulaUnspecifiedError
|
||||
end
|
||||
|
||||
if args.graph?
|
||||
dot_code = dot_code(dependents, recursive:)
|
||||
if args.dot?
|
||||
puts dot_code
|
||||
else
|
||||
exec_browser "https://dreampuf.github.io/GraphvizOnline/##{ERB::Util.url_encode(dot_code)}"
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
puts_deps_tree(dependents, recursive:)
|
||||
return
|
||||
elsif all
|
||||
puts_deps(sorted_dependents(
|
||||
Formula.all(eval_all: args.eval_all?) + Cask::Cask.all(eval_all: args.eval_all?),
|
||||
), recursive:)
|
||||
return
|
||||
elsif !args.no_named? && args.for_each?
|
||||
puts_deps(sorted_dependents(args.named.to_formulae_and_casks), recursive:)
|
||||
return
|
||||
end
|
||||
|
||||
if args.no_named?
|
||||
raise FormulaUnspecifiedError unless args.installed?
|
||||
|
||||
sorted_dependents_formulae_and_casks = case args.only_formula_or_cask
|
||||
when :formula
|
||||
sorted_dependents(Formula.installed)
|
||||
when :cask
|
||||
@ -111,56 +159,20 @@ module Homebrew
|
||||
else
|
||||
sorted_dependents(Formula.installed + Cask::Caskroom.casks)
|
||||
end
|
||||
else
|
||||
raise FormulaUnspecifiedError
|
||||
end
|
||||
|
||||
if args.graph?
|
||||
dot_code = dot_code(dependents, recursive:)
|
||||
if args.dot?
|
||||
puts dot_code
|
||||
else
|
||||
exec_browser "https://dreampuf.github.io/GraphvizOnline/##{ERB::Util.url_encode(dot_code)}"
|
||||
end
|
||||
puts_deps(sorted_dependents_formulae_and_casks, recursive:)
|
||||
return
|
||||
end
|
||||
|
||||
puts_deps_tree(dependents, recursive:)
|
||||
return
|
||||
elsif all
|
||||
puts_deps(sorted_dependents(
|
||||
Formula.all(eval_all: args.eval_all?) + Cask::Cask.all(eval_all: args.eval_all?),
|
||||
), recursive:)
|
||||
return
|
||||
elsif !args.no_named? && args.for_each?
|
||||
puts_deps(sorted_dependents(args.named.to_formulae_and_casks), recursive:)
|
||||
return
|
||||
dependents = dependents(args.named.to_formulae_and_casks)
|
||||
check_head_spec(dependents) if args.HEAD?
|
||||
|
||||
all_deps = deps_for_dependents(dependents, recursive:, &(args.union? ? :| : :&))
|
||||
condense_requirements(all_deps)
|
||||
all_deps.map! { |d| dep_display_name(d) }
|
||||
all_deps.uniq!
|
||||
all_deps.sort! unless args.topological?
|
||||
puts all_deps
|
||||
end
|
||||
|
||||
if args.no_named?
|
||||
raise FormulaUnspecifiedError unless args.installed?
|
||||
|
||||
sorted_dependents_formulae_and_casks = case args.only_formula_or_cask
|
||||
when :formula
|
||||
sorted_dependents(Formula.installed)
|
||||
when :cask
|
||||
sorted_dependents(Cask::Caskroom.casks)
|
||||
else
|
||||
sorted_dependents(Formula.installed + Cask::Caskroom.casks)
|
||||
end
|
||||
puts_deps(sorted_dependents_formulae_and_casks, recursive:)
|
||||
return
|
||||
end
|
||||
|
||||
dependents = dependents(args.named.to_formulae_and_casks)
|
||||
check_head_spec(dependents) if args.HEAD?
|
||||
|
||||
all_deps = deps_for_dependents(dependents, recursive:, &(args.union? ? :| : :&))
|
||||
condense_requirements(all_deps)
|
||||
all_deps.map! { |d| dep_display_name(d) }
|
||||
all_deps.uniq!
|
||||
all_deps.sort! unless args.topological?
|
||||
puts all_deps
|
||||
end
|
||||
|
||||
private
|
||||
|
Loading…
x
Reference in New Issue
Block a user