uninstall: Add ability to reference casks from brew uninstall
This commit is contained in:
parent
cbfea6c125
commit
90c26dadc7
@ -12,26 +12,30 @@ module Cask
|
||||
|
||||
def run
|
||||
casks.each do |cask|
|
||||
odebug "Uninstalling Cask #{cask}"
|
||||
|
||||
raise CaskNotInstalledError, cask unless cask.installed? || force?
|
||||
|
||||
if cask.installed? && !cask.installed_caskfile.nil?
|
||||
# use the same cask file that was used for installation, if possible
|
||||
cask = CaskLoader.load(cask.installed_caskfile) if cask.installed_caskfile.exist?
|
||||
end
|
||||
|
||||
Installer.new(cask, binaries: binaries?, verbose: verbose?, force: force?).uninstall
|
||||
|
||||
next if (versions = cask.versions).empty?
|
||||
|
||||
puts <<~EOS
|
||||
#{cask} #{versions.to_sentence} #{"is".pluralize(versions.count)} still installed.
|
||||
Remove #{(versions.count == 1) ? "it" : "them all"} with `brew cask uninstall --force #{cask}`.
|
||||
EOS
|
||||
uninstall_cask cask, binaries?, verbose?, force?
|
||||
end
|
||||
end
|
||||
|
||||
def self.uninstall_cask(cask, binaries, verbose, force)
|
||||
odebug "Uninstalling Cask #{cask}"
|
||||
|
||||
raise CaskNotInstalledError, cask unless cask.installed? || force
|
||||
|
||||
if cask.installed? && !cask.installed_caskfile.nil?
|
||||
# use the same cask file that was used for installation, if possible
|
||||
cask = CaskLoader.load(cask.installed_caskfile) if cask.installed_caskfile.exist?
|
||||
end
|
||||
|
||||
Installer.new(cask, binaries: binaries, verbose: verbose, force: force).uninstall
|
||||
|
||||
return if (versions = cask.versions).empty?
|
||||
|
||||
puts <<~EOS
|
||||
#{cask} #{versions.to_sentence} #{"is".pluralize(versions.count)} still installed.
|
||||
Remove #{(versions.count == 1) ? "it" : "them all"} with `brew cask uninstall --force #{cask}`.
|
||||
EOS
|
||||
end
|
||||
|
||||
def self.help
|
||||
"uninstalls the given Cask"
|
||||
end
|
||||
|
||||
@ -5,6 +5,9 @@ require "formula"
|
||||
require "diagnostic"
|
||||
require "migrator"
|
||||
require "cli/parser"
|
||||
require "cask/all"
|
||||
require "cask/cmd"
|
||||
require "cask/cask_loader"
|
||||
|
||||
module Homebrew
|
||||
module_function
|
||||
@ -29,15 +32,21 @@ module Homebrew
|
||||
def uninstall
|
||||
uninstall_args.parse
|
||||
|
||||
kegs_by_rack = if args.force?
|
||||
Hash[args.named.map do |name|
|
||||
if args.force?
|
||||
possible_casks = []
|
||||
kegs_by_rack = Hash[args.named.map do |name|
|
||||
rack = Formulary.to_rack(name)
|
||||
next unless rack.directory?
|
||||
|
||||
unless rack.directory?
|
||||
possible_casks << name
|
||||
next
|
||||
end
|
||||
|
||||
[rack, rack.subdirs.map { |d| Keg.new(d) }]
|
||||
end]
|
||||
else
|
||||
args.kegs.group_by(&:rack)
|
||||
kegs_, possible_casks = args.kegs_and_unknowns
|
||||
kegs_by_rack = kegs_.group_by(&:rack)
|
||||
end
|
||||
|
||||
handle_unsatisfied_dependents(kegs_by_rack)
|
||||
@ -108,6 +117,13 @@ module Homebrew
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
possible_casks.each do |name|
|
||||
cask = Cask::CaskLoader.load name
|
||||
Cask::Cmd::Uninstall.uninstall_cask(cask, true, args.verbose, args.force?)
|
||||
rescue Cask::CaskUnavailableError
|
||||
ofail "No installed keg or cask with the name \"#{name}\""
|
||||
end
|
||||
rescue MultipleVersionsInstalledError => e
|
||||
ofail e
|
||||
puts "Run `brew uninstall --force #{e.name}` to remove all versions."
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user