Add --zap flag to brew uninstall and remove brew zap.

This commit is contained in:
Markus Reiter 2020-11-19 14:02:28 +01:00
parent f4b4fdac98
commit 2c47678b05
6 changed files with 24 additions and 113 deletions

View File

@ -58,10 +58,6 @@ module Homebrew
end.uniq.freeze end.uniq.freeze
end 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) def load_formula_or_cask(name, only: nil, method: nil)
if only != :cask if only != :cask
begin begin

View File

@ -26,6 +26,10 @@ module Homebrew
switch "-f", "--force", switch "-f", "--force",
description: "Delete all installed versions of <formula>. Uninstall even if <cask> is not " \ description: "Delete all installed versions of <formula>. Uninstall even if <cask> is not " \
"installed, overwrite existing files and ignore errors when removing files." "installed, overwrite existing files and ignore errors when removing files."
switch "--zap",
description: "Remove all files associated with a <cask>. " \
"*May remove files which are shared between applications.*"
conflicts "--formula", "--zap"
switch "--ignore-dependencies", switch "--ignore-dependencies",
description: "Don't fail uninstall, even if <formula> is a dependency of any installed "\ description: "Don't fail uninstall, even if <formula> is a dependency of any installed "\
"formulae." "formulae."
@ -56,11 +60,19 @@ module Homebrew
named_args: args.named, named_args: args.named,
) )
Cask::Cmd::Uninstall.uninstall_casks( if args.zap?
*casks, Cask::Cmd::Zap.zap_casks(
binaries: EnvConfig.cask_opts_binaries?, *casks,
verbose: args.verbose?, verbose: args.verbose?,
force: args.force?, force: args.force?,
) )
else
Cask::Cmd::Uninstall.uninstall_casks(
*casks,
binaries: EnvConfig.cask_opts_binaries?,
verbose: args.verbose?,
force: args.force?,
)
end
end end
end end

View File

@ -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` [<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.*
EOS
switch "-f", "--force",
description: "Delete all installed versions of <formula>. Uninstall even if <cask> is not " \
"installed, overwrite existing files and ignore errors when removing files."
switch "--ignore-dependencies",
description: "Don't fail uninstall, even if <formula> 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

View File

@ -104,4 +104,3 @@ upgrade
uses uses
vendor-gems vendor-gems
vendor-install vendor-install
zap

View File

@ -569,6 +569,8 @@ Uninstall a *`formula`* or *`cask`*.
* `-f`, `--force`: * `-f`, `--force`:
Delete all installed versions of *`formula`*. Uninstall even if *`cask`* is not installed, overwrite existing files and ignore errors when removing files. 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`: * `--ignore-dependencies`:
Don't fail uninstall, even if *`formula`* is a dependency of any installed formulae. Don't fail uninstall, even if *`formula`* is a dependency of any installed formulae.
* `--formula`: * `--formula`:
@ -677,22 +679,6 @@ specify *`formula`* as a required or recommended dependency for their stable bui
* `--skip-recommended`: * `--skip-recommended`:
Skip all formulae that specify *`formula`* as `:recommended` type dependency. 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`*] ### `--cache` [*`options`*] [*`formula`*|*`cask`*]
Display Homebrew's download cache. See also `HOMEBREW_CACHE`. Display Homebrew's download cache. See also `HOMEBREW_CACHE`.

View File

@ -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\. 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 .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 \fB\-\-ignore\-dependencies\fR
Don\'t fail uninstall, even if \fIformula\fR is a dependency of any installed formulae\. 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 \fB\-\-skip\-recommended\fR
Skip all formulae that specify \fIformula\fR as \fB:recommended\fR type dependency\. 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]" .SS "\fB\-\-cache\fR [\fIoptions\fR] [\fIformula\fR|\fIcask\fR]"
Display Homebrew\'s download cache\. See also \fBHOMEBREW_CACHE\fR\. Display Homebrew\'s download cache\. See also \fBHOMEBREW_CACHE\fR\.
. .