# typed: true
# frozen_string_literal: true

module Cask
  # @api private
  class Uninstall
    def self.uninstall_casks(*casks, binaries: nil, force: false, verbose: false)
      require "cask/installer"

      casks.each do |cask|
        odebug "Uninstalling Cask #{cask}"

        raise CaskNotInstalledError, cask if !cask.installed? && !force

        Installer.new(cask, binaries: binaries, force: force, verbose: verbose).uninstall

        next if (versions = cask.versions).empty?

        puts <<~EOS
          #{cask} #{versions.to_sentence} #{(versions.count == 1) ? "is" : "are"} still installed.
          Remove #{(versions.count == 1) ? "it" : "them all"} with `brew uninstall --cask --force #{cask}`.
        EOS
      end
    end
  end
end
