module Hbc class CLI class Uninstall < AbstractCommand def initialize(*args) @cask_tokens = self.class.cask_tokens_from(args) raise CaskUnspecifiedError if @cask_tokens.empty? @force = args.include? "--force" end def run @cask_tokens.each do |cask_token| odebug "Uninstalling Cask #{cask_token}" cask = CaskLoader.load(cask_token) 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_from_file(cask.installed_caskfile) if cask.installed_caskfile.exist? end Installer.new(cask, binaries: CLI.binaries?, force: @force).uninstall next if (versions = cask.versions).empty? single = versions.count == 1 puts <<-EOS.undent #{cask_token} #{versions.join(", ")} #{single ? "is" : "are"} still installed. Remove #{single ? "it" : "them all"} with `brew cask uninstall --force #{cask_token}`. EOS end end def self.help "uninstalls the given Cask" end end end end