summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandra Dima <alexandra.dima@jetbrains.com>2019-06-27 11:19:21 +0200
committerSamvel Abrahamyan <samvel1024@gmail.com>2019-10-12 14:32:55 +0200
commitb71748b1b58da3b70ceb9290257ed688b71fbe21 (patch)
tree5ee7e09f60e9288df2cf9e7b4406386ac7b2683d
parent5c17cf8cacd66743ae6b695f97541057796edb18 (diff)
downloadmill-b71748b1b58da3b70ceb9290257ed688b71fbe21.tar.gz
mill-b71748b1b58da3b70ceb9290257ed688b71fbe21.tar.bz2
mill-b71748b1b58da3b70ceb9290257ed688b71fbe21.zip
Implemented simple support for cleaning cache
-rw-r--r--contrib/bsp/src/mill/contrib/MainMillBuildServer.scala15
-rw-r--r--contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala30
2 files changed, 30 insertions, 15 deletions
diff --git a/contrib/bsp/src/mill/contrib/MainMillBuildServer.scala b/contrib/bsp/src/mill/contrib/MainMillBuildServer.scala
index 7f1650d6..a8508ab6 100644
--- a/contrib/bsp/src/mill/contrib/MainMillBuildServer.scala
+++ b/contrib/bsp/src/mill/contrib/MainMillBuildServer.scala
@@ -154,20 +154,9 @@ object MainMillBuildServer extends ExternalModule {
val millServer = new mill.contrib.bsp.MillBuildServer(ev, bspVersion, version, languages)
val mods: Seq[JavaModule] = modules(ev)()
for (module <- mods) {
- val mainTask = ev.evaluate(Strict.Agg(module.finalMainClass)).results(module.finalMainClass)
- println(ev.evaluate(Strict.Agg(module.runClasspath)).results(module.runClasspath))
- val id = millServer.moduleToTargetId(module)
- module match {
- case m: TestModule =>
- println("Test: " + millServer.buildTargetScalaTestClasses(
- new ScalaTestClassesParams(List(id).asJava)
- ))
- case default =>
+ println(module.millModuleSegments.parts.mkString("."))
}
- System.err.println("Module: " + module + "has capabilities: " + ModuleUtils.getModuleCapabilities(module, ev))
- System.err.println("Base directory: " + module.millOuterCtx.millSourcePath)
- System.err.println("MIll source path: " + module.millSourcePath)
- }
+
}
/**
diff --git a/contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala b/contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala
index 9658fdc5..91d9c4fd 100644
--- a/contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala
+++ b/contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala
@@ -8,7 +8,7 @@ import ch.epfl.scala.bsp4j._
import mill.{scalalib, _}
import mill.api.{Loose, Result, Strict}
import mill.contrib.bsp.ModuleUtils._
-import mill.eval.{Evaluator}
+import mill.eval.Evaluator
import mill.scalalib._
import mill.scalalib.api.CompilationResult
import mill.scalalib.api.ZincWorkerApi
@@ -21,6 +21,8 @@ import mill.modules.Jvm
import mill.util.{Ctx, PrintLogger}
import mill.define.{Discover, ExternalModule, Target, Task}
+import scala.io.Source
+
class MillBuildServer(evaluator: Evaluator,
_bspVersion: String,
@@ -418,7 +420,31 @@ class MillBuildServer(evaluator: Evaluator,
future
}
- override def buildTargetCleanCache(cleanCacheParams: CleanCacheParams): CompletableFuture[CleanCacheResult] = ???
+ override def buildTargetCleanCache(cleanCacheParams: CleanCacheParams): CompletableFuture[CleanCacheResult] = {
+ def getCleanCacheResult: CleanCacheResult = {
+ var msg = ""
+ var cleaned = true
+ for (targetId <- cleanCacheParams.getTargets.asScala) {
+ val module = targetIdToModule(targetId)
+ val process = Runtime.getRuntime.exec(s"mill clean ${module.millModuleSegments.parts.mkString(".")}.compile")
+
+ val processIn = process.getInputStream
+ val processErr = process.getErrorStream
+
+ val errMessage = Source.fromInputStream(processErr).getLines().mkString("\n")
+ val message = Source.fromInputStream(processIn).getLines().mkString("\n")
+ msg += s"Cleaning cache for target ${targetId} produced the following message: ${message}, ${errMessage}"
+ if (msg.contains("failed")) {
+ cleaned = false
+ }
+ process.waitFor()
+ }
+ new CleanCacheResult(msg, cleaned)
+ }
+ val future = new CompletableFuture[CleanCacheResult]()
+ future.complete(getCleanCacheResult)
+ future
+ }
override def buildTargetScalacOptions(scalacOptionsParams: ScalacOptionsParams):
CompletableFuture[ScalacOptionsResult] = {