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
|
def run
|
||||||
casks.each do |cask|
|
casks.each do |cask|
|
||||||
odebug "Uninstalling Cask #{cask}"
|
uninstall_cask cask, binaries?, verbose?, force?
|
||||||
|
|
||||||
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
|
|
||||||
end
|
end
|
||||||
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
|
def self.help
|
||||||
"uninstalls the given Cask"
|
"uninstalls the given Cask"
|
||||||
end
|
end
|
||||||
|
|||||||
@ -5,6 +5,9 @@ require "formula"
|
|||||||
require "diagnostic"
|
require "diagnostic"
|
||||||
require "migrator"
|
require "migrator"
|
||||||
require "cli/parser"
|
require "cli/parser"
|
||||||
|
require "cask/all"
|
||||||
|
require "cask/cmd"
|
||||||
|
require "cask/cask_loader"
|
||||||
|
|
||||||
module Homebrew
|
module Homebrew
|
||||||
module_function
|
module_function
|
||||||
@ -29,15 +32,21 @@ module Homebrew
|
|||||||
def uninstall
|
def uninstall
|
||||||
uninstall_args.parse
|
uninstall_args.parse
|
||||||
|
|
||||||
kegs_by_rack = if args.force?
|
if args.force?
|
||||||
Hash[args.named.map do |name|
|
possible_casks = []
|
||||||
|
kegs_by_rack = Hash[args.named.map do |name|
|
||||||
rack = Formulary.to_rack(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) }]
|
[rack, rack.subdirs.map { |d| Keg.new(d) }]
|
||||||
end]
|
end]
|
||||||
else
|
else
|
||||||
args.kegs.group_by(&:rack)
|
kegs_, possible_casks = args.kegs_and_unknowns
|
||||||
|
kegs_by_rack = kegs_.group_by(&:rack)
|
||||||
end
|
end
|
||||||
|
|
||||||
handle_unsatisfied_dependents(kegs_by_rack)
|
handle_unsatisfied_dependents(kegs_by_rack)
|
||||||
@ -108,6 +117,13 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
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
|
rescue MultipleVersionsInstalledError => e
|
||||||
ofail e
|
ofail e
|
||||||
puts "Run `brew uninstall --force #{e.name}` to remove all versions."
|
puts "Run `brew uninstall --force #{e.name}` to remove all versions."
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user