Merge pull request #19892 from tyuwags/master

`brew install--ask` for casks
This commit is contained in:
Mike McQuaid 2025-05-08 10:45:19 +00:00 committed by GitHub
commit c1d29f65a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 31 additions and 19 deletions

View File

@ -43,6 +43,10 @@ module Homebrew
description: "Print the verification and post-install steps."
switch "-n", "--dry-run",
description: "Show what would be installed, but do not actually install anything."
switch "--ask",
env: :ask,
description: "Ask for confirmation before downloading and installing formulae. " \
"Print bottles and dependencies download size and install size."
[
[:switch, "--formula", "--formulae", {
description: "Treat all named arguments as formulae.",
@ -123,11 +127,6 @@ module Homebrew
[:switch, "--overwrite", {
description: "Delete files that already exist in the prefix while linking.",
}],
[:switch, "--ask", {
description: "Ask for confirmation before downloading and installing formulae. " \
"Print bottles and dependencies download size and install size.",
env: :ask,
}],
].each do |args|
options = args.pop
send(*args, **options)
@ -218,6 +217,7 @@ module Homebrew
end
if casks.any?
Install.ask_casks casks if args.ask?
if args.dry_run?
if (casks_to_install = casks.reject(&:installed?).presence)
ohai "Would install #{::Utils.pluralize("cask", casks_to_install.count, include_count: true)}:"
@ -310,7 +310,7 @@ module Homebrew
Install.perform_preinstall_checks_once
Install.check_cc_argv(args.cc)
Install.ask(formulae, args: args) if args.ask?
Install.ask_formulae(installed_formulae, args: args) if args.ask?
Install.install_formulae(
installed_formulae,

View File

@ -39,6 +39,10 @@ module Homebrew
"non-migrated versions."
switch "-v", "--verbose",
description: "Print the verification and post-install steps."
switch "--ask",
description: "Ask for confirmation before downloading and upgrading formulae. " \
"Print bottles and dependencies download size, install and net install size.",
env: :ask
[
[:switch, "--formula", "--formulae", { description: "Treat all named arguments as formulae." }],
[:switch, "-s", "--build-from-source", {
@ -63,11 +67,6 @@ module Homebrew
[:switch, "-g", "--git", {
description: "Create a Git repository, useful for creating patches to the software.",
}],
[:switch, "--ask", {
description: "Ask for confirmation before downloading and upgrading formulae. " \
"Print bottles and dependencies download size, install and net install size.",
env: :ask,
}],
].each do |args|
options = args.pop
send(*args, **options)
@ -132,7 +131,7 @@ module Homebrew
Install.perform_preinstall_checks_once
# If asking the user is enabled, show dependency and size information.
Install.ask(formulae, args: args) if args.ask?
Install.ask_formulae(formulae, args: args) if args.ask?
formulae.each do |formula|
if formula.pinned?
@ -173,6 +172,7 @@ module Homebrew
end
if casks.any?
Install.ask_casks casks if args.ask?
Cask::Reinstall.reinstall_casks(
*casks,
binaries: args.binaries?,

View File

@ -39,6 +39,10 @@ module Homebrew
description: "Print the verification and post-install steps."
switch "-n", "--dry-run",
description: "Show what would be upgraded, but do not actually upgrade anything."
switch "--ask",
description: "Ask for confirmation before downloading and upgrading formulae. " \
"Print bottles and dependencies download size, install and net install size.",
env: :ask
[
[:switch, "--formula", "--formulae", {
description: "Treat all named arguments as formulae. If no named arguments " \
@ -71,11 +75,6 @@ module Homebrew
[:switch, "--overwrite", {
description: "Delete files that already exist in the prefix while linking.",
}],
[:switch, "--ask", {
description: "Ask for confirmation before downloading and upgrading formulae. " \
"Print bottles and dependencies download size, install and net install size.",
env: :ask,
}],
].each do |args|
options = args.pop
send(*args, **options)
@ -222,7 +221,7 @@ module Homebrew
Install.perform_preinstall_checks_once
# Main block: if asking the user is enabled, show dependency and size information.
Install.ask(formulae_to_install, args: args) if args.ask?
Install.ask_formulae(formulae_to_install, args: args) if args.ask?
Upgrade.upgrade_formulae(
formulae_to_install,
@ -262,6 +261,8 @@ module Homebrew
def upgrade_outdated_casks(casks)
return false if args.formula?
Install.ask_casks casks
Cask::Upgrade.upgrade_casks(
*casks,
force: args.force?,

View File

@ -331,7 +331,9 @@ module Homebrew
end
# If asking the user is enabled, show dependency and size information.
def ask(formulae, args:)
def ask_formulae(formulae, args:)
return if formulae.empty?
ohai "Looking for bottles..."
sized_formulae = compute_sized_formulae(formulae, args: args)
@ -346,6 +348,15 @@ module Homebrew
ask_input
end
def ask_casks(casks)
return if casks.empty?
puts "#{::Utils.pluralize("Cask", casks.count, plural: "s")} \
(#{casks.count}): #{casks.join(", ")}\n\n"
ask_input
end
private
def perform_preinstall_checks(all_fatal: false)