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."
|
"debugging the `--installed`/`--eval-all` display mode."
|
||||||
switch "--HEAD",
|
switch "--HEAD",
|
||||||
description: "Show dependencies for HEAD version instead of stable version."
|
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",
|
switch "--formula", "--formulae",
|
||||||
description: "Treat all named arguments as formulae."
|
description: "Treat all named arguments as formulae."
|
||||||
switch "--cask", "--casks",
|
switch "--cask", "--casks",
|
||||||
@ -82,28 +86,72 @@ module Homebrew
|
|||||||
|
|
||||||
sig { override.void }
|
sig { override.void }
|
||||||
def run
|
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?
|
all = args.eval_all?
|
||||||
|
|
||||||
Formulary.enable_factory_cache!
|
Formulary.enable_factory_cache!
|
||||||
|
|
||||||
recursive = !args.direct?
|
SimulateSystem.with(os:, arch:) do
|
||||||
installed = args.installed? || dependents(args.named.to_formulae_and_casks).all?(&:any_version_installed?)
|
recursive = !args.direct?
|
||||||
|
installed = args.installed? || dependents(args.named.to_formulae_and_casks).all?(&:any_version_installed?)
|
||||||
|
|
||||||
@use_runtime_dependencies = installed && recursive &&
|
@use_runtime_dependencies = installed && recursive &&
|
||||||
!args.tree? &&
|
!args.tree? &&
|
||||||
!args.graph? &&
|
!args.graph? &&
|
||||||
!args.HEAD? &&
|
!args.HEAD? &&
|
||||||
!args.include_build? &&
|
!args.include_build? &&
|
||||||
!args.include_test? &&
|
!args.include_test? &&
|
||||||
!args.include_optional? &&
|
!args.include_optional? &&
|
||||||
!args.skip_recommended? &&
|
!args.skip_recommended? &&
|
||||||
!args.missing?
|
!args.missing? &&
|
||||||
|
args.os.nil? &&
|
||||||
|
args.arch.nil?
|
||||||
|
|
||||||
if args.tree? || args.graph?
|
if args.tree? || args.graph?
|
||||||
dependents = if args.named.present?
|
dependents = if args.named.present?
|
||||||
sorted_dependents(args.named.to_formulae_and_casks)
|
sorted_dependents(args.named.to_formulae_and_casks)
|
||||||
elsif args.installed?
|
elsif args.installed?
|
||||||
case args.only_formula_or_cask
|
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
|
when :formula
|
||||||
sorted_dependents(Formula.installed)
|
sorted_dependents(Formula.installed)
|
||||||
when :cask
|
when :cask
|
||||||
@ -111,56 +159,20 @@ module Homebrew
|
|||||||
else
|
else
|
||||||
sorted_dependents(Formula.installed + Cask::Caskroom.casks)
|
sorted_dependents(Formula.installed + Cask::Caskroom.casks)
|
||||||
end
|
end
|
||||||
else
|
puts_deps(sorted_dependents_formulae_and_casks, recursive:)
|
||||||
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
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
puts_deps_tree(dependents, recursive:)
|
dependents = dependents(args.named.to_formulae_and_casks)
|
||||||
return
|
check_head_spec(dependents) if args.HEAD?
|
||||||
elsif all
|
|
||||||
puts_deps(sorted_dependents(
|
all_deps = deps_for_dependents(dependents, recursive:, &(args.union? ? :| : :&))
|
||||||
Formula.all(eval_all: args.eval_all?) + Cask::Cask.all(eval_all: args.eval_all?),
|
condense_requirements(all_deps)
|
||||||
), recursive:)
|
all_deps.map! { |d| dep_display_name(d) }
|
||||||
return
|
all_deps.uniq!
|
||||||
elsif !args.no_named? && args.for_each?
|
all_deps.sort! unless args.topological?
|
||||||
puts_deps(sorted_dependents(args.named.to_formulae_and_casks), recursive:)
|
puts all_deps
|
||||||
return
|
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
Loading…
x
Reference in New Issue
Block a user