uninstall_unnecessary_software!

in lib/asdf/tool_versions.rb [18:64]


    def uninstall_unnecessary_software!(prompt: true)
      return true unless work_to_do?

      if prompt
        inform
        return true unless confirm?
      end

      failed_to_uninstall = {}

      unnecessary_installed_versions_of_software.each do |name, versions|
        GDK::Output.print "Uninstalling #{name} "

        versions.each_with_index do |(version, tool_version), i|
          GDK::Output.print ', ' if i.positive?
          GDK::Output.print version

          begin
            tool_version.uninstall!
          rescue ToolVersion::UninstallFailedError
            failed_to_uninstall[name] ||= []
            failed_to_uninstall[name] << version
          end
        end

        icon = if failed_to_uninstall.empty?
                 :success
               elsif failed_to_uninstall.count == versions.count
                 :error
               else
                 :warning
               end

        GDK::Output.puts(" #{GDK::Output.icon(icon)}")
      end

      return true if failed_to_uninstall.empty?

      GDK::Output.puts(stderr: true)
      GDK::Output.warn("Failed to uninstall the following:\n\n")
      failed_to_uninstall.each do |name, versions|
        GDK::Output.puts("#{name} #{versions.join(', ')}")
      end

      false
    end