untap: add --force switch

Co-authored-by: Eric Knibbe <enk3@outlook.com>
This commit is contained in:
Dawid Dziurla 2020-12-04 21:19:48 +01:00
parent fc0ab4c0a3
commit 5f9140f8a8
No known key found for this signature in database
GPG Key ID: 7B6D8368172E9B0B
3 changed files with 24 additions and 0 deletions

View File

@ -2,6 +2,7 @@
# frozen_string_literal: true # frozen_string_literal: true
require "cli/parser" require "cli/parser"
require "formula"
module Homebrew module Homebrew
extend T::Sig extend T::Sig
@ -16,6 +17,8 @@ module Homebrew
Remove a tapped formula repository. Remove a tapped formula repository.
EOS EOS
switch "-f", "--force",
description: "Untap even if formulae or casks from this tap are currently installed."
min_named 1 min_named 1
end end
@ -28,6 +31,20 @@ module Homebrew
tap = Tap.fetch(tapname) tap = Tap.fetch(tapname)
odie "Untapping #{tap} is not allowed" if tap.core_tap? odie "Untapping #{tap} is not allowed" if tap.core_tap?
installed_tap_formulae = Formula.installed.select { |formula| formula.tap == tap }
installed_tap_casks = Cask::Caskroom.casks.select { |cask| cask.tap == tap }
if installed_tap_formulae.length.positive? || installed_tap_casks.length.positive?
if args.force?
opoo "Untapping #{tap} even though it contains formulae or casks that are currently installed."
else
odie <<~EOS
Refusing to untap #{tap} because it contains the following installed formulae or casks:
#{(installed_tap_formulae + installed_tap_casks.map(&:token)).join("\n")}
EOS
end
end
tap.uninstall tap.uninstall
end end
end end

View File

@ -572,6 +572,9 @@ See also `pin`.
Remove a tapped formula repository. Remove a tapped formula repository.
* `-f`, `--force`:
Untap even if formulae or casks from this tap are currently installed.
### `update` [*`options`*] ### `update` [*`options`*]
Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations. Fetch the newest version of Homebrew and all formulae from GitHub using `git`(1) and perform any necessary migrations.

View File

@ -770,6 +770,10 @@ Unpin \fIformula\fR, allowing them to be upgraded by \fBbrew upgrade\fR \fIformu
.SS "\fBuntap\fR \fItap\fR" .SS "\fBuntap\fR \fItap\fR"
Remove a tapped formula repository\. Remove a tapped formula repository\.
. .
.TP
\fB\-f\fR, \fB\-\-force\fR
Untap even if formulae or casks from this tap are currently installed\.
.
.SS "\fBupdate\fR [\fIoptions\fR]" .SS "\fBupdate\fR [\fIoptions\fR]"
Fetch the newest version of Homebrew and all formulae from GitHub using \fBgit\fR(1) and perform any necessary migrations\. Fetch the newest version of Homebrew and all formulae from GitHub using \fBgit\fR(1) and perform any necessary migrations\.
. .