diff options
author | Alexandra Dima <alexandra.dima@jetbrains.com> | 2019-06-27 11:19:21 +0200 |
---|---|---|
committer | Samvel Abrahamyan <samvel1024@gmail.com> | 2019-10-12 14:32:55 +0200 |
commit | b71748b1b58da3b70ceb9290257ed688b71fbe21 (patch) | |
tree | 5ee7e09f60e9288df2cf9e7b4406386ac7b2683d /contrib | |
parent | 5c17cf8cacd66743ae6b695f97541057796edb18 (diff) | |
download | mill-b71748b1b58da3b70ceb9290257ed688b71fbe21.tar.gz mill-b71748b1b58da3b70ceb9290257ed688b71fbe21.tar.bz2 mill-b71748b1b58da3b70ceb9290257ed688b71fbe21.zip |
Implemented simple support for cleaning cache
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/bsp/src/mill/contrib/MainMillBuildServer.scala | 15 | ||||
-rw-r--r-- | contrib/bsp/src/mill/contrib/bsp/MillBuildServer.scala | 30 |
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] = { |