class KPM::Uninstaller

def uninstall_non_default_plugins(dry_run = false)

def uninstall_non_default_plugins(dry_run = false)
  plugins = categorize_plugins
  if plugins[:to_be_deleted].empty?
    KPM.ui.say 'Nothing to do'
    return false
  end
  if dry_run
    msg = "The following plugin versions would be removed:\n"
    msg += plugins[:to_be_deleted].map { |p| "  #{p[0][:plugin_name]}: #{p[1]}" }.join("\n")
    msg += "\nThe following plugin versions would be kept:\n"
    msg += plugins[:to_keep].map { |p| "  #{p[0][:plugin_name]}: #{p[1]}" }.join("\n")
    KPM.ui.say msg
    false
  else
    plugins[:to_be_deleted].each do |p|
      remove_plugin_version(p[0], p[1])
    end
    true
  end
end