Skip to content

Commit

Permalink
Let VizWorker extends AutoCloseable
Browse files Browse the repository at this point in the history
  • Loading branch information
lefou committed Mar 16, 2022
1 parent 9de08bb commit a5d1899
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
11 changes: 3 additions & 8 deletions main/src/mill/main/MainModule.scala
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import mill.define.{Command, NamedTask, Task}
import mill.eval.{Evaluator, EvaluatorPaths}
import mill.util.{PrintLogger, Watched}
import mill.define.SelectMode
import mill.main.VisualizeModule.VizWorker
import pprint.{Renderer, Truncated}
import ujson.Value

Expand Down Expand Up @@ -380,11 +381,6 @@ trait MainModule extends mill.Module {
System.exit(0)
}

private type VizWorker = (
LinkedBlockingQueue[(scala.Seq[_], scala.Seq[_], os.Path)],
LinkedBlockingQueue[Result[scala.Seq[PathRef]]]
)

private def visualize0(
evaluator: Evaluator,
targets: Seq[String],
Expand All @@ -396,9 +392,8 @@ trait MainModule extends mill.Module {
rs: List[NamedTask[Any]],
allRs: List[NamedTask[Any]]
): Result[Seq[PathRef]] = {
val (in, out) = vizWorker
in.put((rs, allRs, ctx.dest))
out.take()
vizWorker.in.put((rs, allRs, ctx.dest))
vizWorker.out.take()
}

RunScript.resolveTasks(
Expand Down
20 changes: 18 additions & 2 deletions main/src/mill/main/VisualizeModule.scala
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
package mill.main

import java.util.concurrent.LinkedBlockingQueue

import coursier.LocalRepositories
import coursier.core.Repository
import coursier.maven.MavenRepository
import mill.T
import mill.define.{Discover, ExternalModule}
import mill.api.{PathRef, Result}
import mill.main.VisualizeModule.VizWorker

object VisualizeModule extends ExternalModule with VisualizeModule {

private[main] class VizWorker(
val in: LinkedBlockingQueue[(scala.Seq[_], scala.Seq[_], os.Path)],
val out: LinkedBlockingQueue[Result[scala.Seq[PathRef]]],
closer: () => Unit = () => {}
) extends AutoCloseable {
override def close(): Unit = closer()
}

def repositories = Seq(
LocalRepositories.ivy2Local,
MavenRepository("https://repo1.maven.org/maven2"),
Expand All @@ -19,6 +28,7 @@ object VisualizeModule extends ExternalModule with VisualizeModule {
implicit def millScoptEvaluatorReads[T] = new mill.main.EvaluatorScopt[T]()
lazy val millDiscover = Discover[this.type]
}

trait VisualizeModule extends mill.define.TaskModule {
def repositories: Seq[Repository]
def defaultCommandName() = "run"
Expand Down Expand Up @@ -55,6 +65,12 @@ trait VisualizeModule extends mill.define.TaskModule {
)
visualizeThread.setDaemon(true)
visualizeThread.start()
(in, out)
new VizWorker(
in,
out,
() => {
visualizeThread.interrupt()
}
)
}
}

0 comments on commit a5d1899

Please sign in to comment.