diff --git a/Library/Homebrew/cmd/leaves.rb b/Library/Homebrew/cmd/leaves.rb index 178d94ed0e..fb5edffdf1 100644 --- a/Library/Homebrew/cmd/leaves.rb +++ b/Library/Homebrew/cmd/leaves.rb @@ -15,14 +15,40 @@ module Homebrew description <<~EOS List installed formulae that are not dependencies of another installed formula. EOS + switch "-r", "--installed-on-request", + description: "Only list leaves that were manually installed." + switch "-p", "--installed-as-dependency", + description: "Only list leaves that were installed as dependencies." named_args :none end end - def leaves - leaves_args.parse + def installed_on_request?(leaf) + Tab.for_keg(leaf.any_installed_keg).installed_on_request + end - Formula.installed_formulae_with_no_dependents.map(&:full_name).sort.each(&method(:puts)) + def installed_as_dependency?(leaf) + Tab.for_keg(leaf.any_installed_keg).installed_as_dependency + end + + def leaves + args = leaves_args.parse + + leaves_list = Formula.installed_formulae_with_no_dependents + + if args.installed_on_request? + leaves_list.select! do |l| + installed_on_request?(l) + end + end + + if args.installed_as_dependency? + leaves_list.select! do |l| + installed_as_dependency?(l) + end + end + + leaves_list.map(&:full_name).sort.each(&method(:puts)) end end