diff --git a/Library/Homebrew/cli/named_args.rb b/Library/Homebrew/cli/named_args.rb index 0a732b1241..3b9f96eeac 100644 --- a/Library/Homebrew/cli/named_args.rb +++ b/Library/Homebrew/cli/named_args.rb @@ -58,10 +58,6 @@ module Homebrew end.uniq.freeze end - sig do - params(name: String, only: T.nilable(Symbol), method: T.nilable(Symbol)) - .returns(T.any(Formula, Cask::Cask, Keg, T::Array[Keg])) - end def load_formula_or_cask(name, only: nil, method: nil) if only != :cask begin diff --git a/Library/Homebrew/cmd/uninstall.rb b/Library/Homebrew/cmd/uninstall.rb index bd893c30ca..bb7968a9bf 100644 --- a/Library/Homebrew/cmd/uninstall.rb +++ b/Library/Homebrew/cmd/uninstall.rb @@ -26,6 +26,10 @@ module Homebrew switch "-f", "--force", description: "Delete all installed versions of . Uninstall even if is not " \ "installed, overwrite existing files and ignore errors when removing files." + switch "--zap", + description: "Remove all files associated with a . " \ + "*May remove files which are shared between applications.*" + conflicts "--formula", "--zap" switch "--ignore-dependencies", description: "Don't fail uninstall, even if is a dependency of any installed "\ "formulae." @@ -56,11 +60,19 @@ module Homebrew named_args: args.named, ) - Cask::Cmd::Uninstall.uninstall_casks( - *casks, - binaries: EnvConfig.cask_opts_binaries?, - verbose: args.verbose?, - force: args.force?, - ) + if args.zap? + Cask::Cmd::Zap.zap_casks( + *casks, + verbose: args.verbose?, + force: args.force?, + ) + else + Cask::Cmd::Uninstall.uninstall_casks( + *casks, + binaries: EnvConfig.cask_opts_binaries?, + verbose: args.verbose?, + force: args.force?, + ) + end end end diff --git a/Library/Homebrew/cmd/zap.rb b/Library/Homebrew/cmd/zap.rb deleted file mode 100644 index 70a80991d9..0000000000 --- a/Library/Homebrew/cmd/zap.rb +++ /dev/null @@ -1,64 +0,0 @@ -# typed: true -# frozen_string_literal: true - -require "cask/cmd" -require "cask/cask_loader" -require "uninstall" - -module Homebrew - extend T::Sig - - module_function - - sig { returns(CLI::Parser) } - def zap_args - Homebrew::CLI::Parser.new do - usage_banner <<~EOS - `zap` [] | - - Remove all files associated with the given or . - Implicitly also performs all actions associated with `uninstall`. - - *May remove files which are shared between applications.* - EOS - switch "-f", "--force", - description: "Delete all installed versions of . Uninstall even if is not " \ - "installed, overwrite existing files and ignore errors when removing files." - switch "--ignore-dependencies", - description: "Don't fail uninstall, even if is a dependency of any installed "\ - "formulae." - - switch "--formula", "--formulae", - description: "Treat all named arguments as formulae." - switch "--cask", "--casks", - description: "Treat all named arguments as casks." - conflicts "--formula", "--cask" - - min_named :formula_or_cask - end - end - - def zap - args = zap_args.parse - - only = :formula if args.formula? && !args.cask? - only = :cask if args.cask? && !args.formula? - - all_kegs, casks = args.named.to_kegs_to_casks(only: only, ignore_unavailable: args.force?, all_kegs: args.force?) - kegs_by_rack = all_kegs.group_by(&:rack) - - Uninstall.uninstall_kegs( - kegs_by_rack, - force: args.force?, - ignore_dependencies: args.ignore_dependencies?, - named_args: args.named, - ) - - Cask::Cmd::Zap.zap_casks( - *casks, - binaries: EnvConfig.cask_opts_binaries?, - verbose: args.verbose?, - force: args.force?, - ) - end -end diff --git a/completions/internal_commands_list.txt b/completions/internal_commands_list.txt index 34d23167e0..0d277a1200 100644 --- a/completions/internal_commands_list.txt +++ b/completions/internal_commands_list.txt @@ -104,4 +104,3 @@ upgrade uses vendor-gems vendor-install -zap diff --git a/docs/Manpage.md b/docs/Manpage.md index dbcdc13bce..96b66fc77d 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -569,6 +569,8 @@ Uninstall a *`formula`* or *`cask`*. * `-f`, `--force`: Delete all installed versions of *`formula`*. Uninstall even if *`cask`* is not installed, overwrite existing files and ignore errors when removing files. +* `--zap`: + Remove all files associated with a *`cask`*. *May remove files which are shared between applications.* * `--ignore-dependencies`: Don't fail uninstall, even if *`formula`* is a dependency of any installed formulae. * `--formula`: @@ -677,22 +679,6 @@ specify *`formula`* as a required or recommended dependency for their stable bui * `--skip-recommended`: Skip all formulae that specify *`formula`* as `:recommended` type dependency. -### `zap` [*`options`*] *`formula`*|*`cask`* - -Remove all files associated with the given *`formula`* or *`cask`*. -Implicitly also performs all actions associated with `uninstall`. - -*May remove files which are shared between applications.* - -* `-f`, `--force`: - Delete all installed versions of *`formula`*. Uninstall even if *`cask`* is not installed, overwrite existing files and ignore errors when removing files. -* `--ignore-dependencies`: - Don't fail uninstall, even if *`formula`* is a dependency of any installed formulae. -* `--formula`: - Treat all named arguments as formulae. -* `--cask`: - Treat all named arguments as casks. - ### `--cache` [*`options`*] [*`formula`*|*`cask`*] Display Homebrew's download cache. See also `HOMEBREW_CACHE`. diff --git a/manpages/brew.1 b/manpages/brew.1 index 26cacaa7ec..5163542233 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -790,6 +790,10 @@ Uninstall a \fIformula\fR or \fIcask\fR\. Delete all installed versions of \fIformula\fR\. Uninstall even if \fIcask\fR is not installed, overwrite existing files and ignore errors when removing files\. . .TP +\fB\-\-zap\fR +Remove all files associated with a \fIcask\fR\. \fIMay remove files which are shared between applications\.\fR +. +.TP \fB\-\-ignore\-dependencies\fR Don\'t fail uninstall, even if \fIformula\fR is a dependency of any installed formulae\. . @@ -940,28 +944,6 @@ Include all formulae that specify \fIformula\fR as \fB:optional\fR type dependen \fB\-\-skip\-recommended\fR Skip all formulae that specify \fIformula\fR as \fB:recommended\fR type dependency\. . -.SS "\fBzap\fR [\fIoptions\fR] \fIformula\fR|\fIcask\fR" -Remove all files associated with the given \fIformula\fR or \fIcask\fR\. Implicitly also performs all actions associated with \fBuninstall\fR\. -. -.P -\fIMay remove files which are shared between applications\.\fR -. -.TP -\fB\-f\fR, \fB\-\-force\fR -Delete all installed versions of \fIformula\fR\. Uninstall even if \fIcask\fR is not installed, overwrite existing files and ignore errors when removing files\. -. -.TP -\fB\-\-ignore\-dependencies\fR -Don\'t fail uninstall, even if \fIformula\fR is a dependency of any installed formulae\. -. -.TP -\fB\-\-formula\fR -Treat all named arguments as formulae\. -. -.TP -\fB\-\-cask\fR -Treat all named arguments as casks\. -. .SS "\fB\-\-cache\fR [\fIoptions\fR] [\fIformula\fR|\fIcask\fR]" Display Homebrew\'s download cache\. See also \fBHOMEBREW_CACHE\fR\. .