# File lib/automateit/package_manager.rb, line 169
  def _uninstall_helper(*packages, &block) # :yields: filtered_packages, opts
    _raise_unless_available

    packages, opts = args_and_opts(*packages)
    packages = _list_normalizer(packages)

    check_packages = \
      case packages
      when Hash
        packages.keys
      else 
        packages
      end

    present = installed?(check_packages, :details => true)[1]
    return false if present.blank?

    uninstall_packages = \
      case packages
      when Hash
        present.map{|t| packages[t]}
      else 
        present
      end
    block.call(uninstall_packages, opts)

    return true if preview?
    unless (failed = installed?(check_packages, :details => true)[1]).empty?
      raise ArgumentError.new("Couldn't uninstall: #{failed.join(' ')}")
    else
      return true
    end
  end