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))
}