override def save()

in ideaSupport/src/main/scala/org/jetbrains/sbtidea/download/plugin/serialization/XmlPluginIndexSerializer.scala [51:81]


  override def save(file: Path, data: Seq[(String, PluginInfo)]): Unit = {
    val plugins = data.map { case (id, info) =>
      val descriptorXml = XML.loadString(info.descriptor.toXMLStr)

      val downloadInfoXml = info.downloadInfo.map { downloadInfo =>
        <downloadInfo>
          <downloadedFileName>{downloadInfo.downloadedFileName}</downloadedFileName>
          <downloadedUrl>{downloadInfo.downloadedUrl.toString}</downloadedUrl>
          <downloadedTime>{downloadInfo.downloadedTime.toString}</downloadedTime>
        </downloadInfo>
      }

      <plugin>
        <id>{id}</id>
        <path>{info.installPath}</path>
        <descriptor>{descriptorXml}</descriptor>
        {if (downloadInfoXml.isDefined) downloadInfoXml.get}
      </plugin>
    }

    val indexXml =
      <pluginIndex>
        <version>{IndexVersion}</version>
        <plugins>{plugins}</plugins>
      </pluginIndex>

    val printer = new PrettyPrinter(120, 2)
    val formattedXml = printer.format(indexXml)

    Files.write(file, formattedXml.getBytes(StandardCharsets.UTF_8))
  }