in ideaSupport/src/main/scala/org/jetbrains/sbtidea/download/plugin/RepoPluginInstaller.scala [46:73]
private[plugin] def installIdeaPlugin(
plugin: IntellijPlugin,
artifact: Path,
downloadInfo: Option[PluginDownloadInfo] = None
)(implicit ctx: IdeInstallationContext): Path = {
val downloadedPluginFileNameHint = downloadInfo.map(_.downloadedFileName).fold("")(name => s" ($name)")
val pluginsInstallationDir = Files.createDirectories(ctx.pluginsDir)
val installedPluginRoot = if (!PluginXmlDetector.Default.isPluginJar(artifact)) {
val tmpPluginDir = extractPluginToTemporaryDir(
artifact,
plugin,
s"${buildInfo.edition.name}-${buildInfo.buildNumber}-plugin"
)
val installDir = pluginsInstallationDir.resolve(tmpPluginDir.getFileName)
NioUtils.delete(installDir)
Files.move(tmpPluginDir, installDir)
NioUtils.delete(tmpPluginDir.getParent)
log.info(s"Installed plugin '$plugin'$downloadedPluginFileNameHint to $installDir")
installDir
} else {
val targetJar = pluginsInstallationDir.resolve(artifact.getFileName)
Files.move(artifact, targetJar)
log.info(s"Installed plugin '$plugin'$downloadedPluginFileNameHint to $targetJar")
targetJar
}
localRegistry.markPluginInstalled(plugin, installedPluginRoot, downloadInfo)
installedPluginRoot
}