scala-cli/src/org/jetbrains/scalaCli/project/importing/ScalaCliProjectInstaller.scala (26 lines of code) (raw):
package org.jetbrains.scalaCli.project.importing
import org.jetbrains.bsp.BspUtil
import org.jetbrains.bsp.project.BspProjectInstallProvider
import org.jetbrains.bsp.project.importing.bspConfigSteps
import org.jetbrains.bsp.project.importing.bspConfigSteps.ScalaCliSetup
import org.jetbrains.plugins.scala.extensions.PathExt
import org.jetbrains.scalaCli.ScalaCliUtils
import org.jetbrains.scalaCli.ScalaCliUtils.getScalaCliCommand
import org.jetbrains.scalaCli.project.ScalaCliProjectUtils.ProjectDefinitionFileName
import java.nio.file.Path
import scala.util.{Failure, Success, Try}
class ScalaCliProjectInstaller extends BspProjectInstallProvider {
override def canImport(workspace: Path): Boolean =
Option(workspace).filter(_.isDirectory).exists(isScalaCli)
override def serverName: String = "Scala CLI"
override def installCommand(workspace: Path): Try[Seq[String]] =
ScalaCliUtils.detectScalaCliInstallKind(workspace) match {
case Some(scalaCliInstallKind) =>
Success(Seq(getScalaCliCommand(scalaCliInstallKind), "setup-ide", "."))
case None =>
Failure(new IllegalStateException("Unable to install BSP, because Scala CLI is not installed"))
}
override def getConfigSetup: bspConfigSteps.ConfigSetup = ScalaCliSetup
private def isScalaCli(directory: Path): Boolean =
BspUtil.findFileByName(directory, ProjectDefinitionFileName).isDefined
}