summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-02-09 00:14:47 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-02-09 08:17:47 -0800
commit8ddd2fa054bc8639c28db2e95b7903e2954fdb7d (patch)
treeaa985f1e715f07eb279e6facad61de8a187e316c
parent90d0a3388d280554eaa51371f666d2f7a965a8af (diff)
downloadmill-8ddd2fa054bc8639c28db2e95b7903e2954fdb7d.tar.gz
mill-8ddd2fa054bc8639c28db2e95b7903e2954fdb7d.tar.bz2
mill-8ddd2fa054bc8639c28db2e95b7903e2954fdb7d.zip
.
-rw-r--r--build.sbt21
-rwxr-xr-xbuild.sc22
-rwxr-xr-xci/test-mill-built.sh2
-rwxr-xr-xci/test-mill-release.sh2
-rwxr-xr-xci/test-sbt-built.sh2
-rwxr-xr-xci/test-sbt.sh2
-rwxr-xr-xci/test_all.sh15
-rw-r--r--core/src/mill/define/BaseModule.scala10
-rw-r--r--core/src/mill/define/Ctx.scala13
-rw-r--r--core/src/mill/define/Discover.scala7
-rw-r--r--core/src/mill/define/Module.scala2
-rw-r--r--core/src/mill/eval/Evaluator.scala8
-rw-r--r--core/src/mill/main/MainModule.scala27
-rw-r--r--core/src/mill/util/ParseArgs.scala (renamed from core/src/mill/main/ParseArgs.scala)3
-rw-r--r--core/src/mill/util/Router.scala (renamed from core/src/mill/main/Router.scala)30
-rw-r--r--core/src/mill/util/Scripts.scala (renamed from core/src/mill/main/Scripts.scala)6
-rw-r--r--core/src/mill/util/Watched.scala8
-rw-r--r--main/src/mill/Main.scala (renamed from core/src/mill/Main.scala)0
-rw-r--r--main/src/mill/main/MagicScopt.scala (renamed from core/src/mill/main/MagicScopt.scala)15
-rw-r--r--main/src/mill/main/MainModule.scala56
-rw-r--r--main/src/mill/main/MainRunner.scala (renamed from core/src/mill/main/MainRunner.scala)1
-rw-r--r--main/src/mill/main/ReplApplyHandler.scala (renamed from core/src/mill/main/ReplApplyHandler.scala)102
-rw-r--r--main/src/mill/main/Resolve.scala (renamed from core/src/mill/main/Resolve.scala)9
-rw-r--r--main/src/mill/main/RunScript.scala (renamed from core/src/mill/main/RunScript.scala)23
-rw-r--r--main/src/mill/modules/Jvm.scala (renamed from core/src/mill/modules/Jvm.scala)0
-rw-r--r--main/src/mill/modules/Util.scala (renamed from core/src/mill/modules/Util.scala)0
-rw-r--r--main/src/mill/package.scala (renamed from core/src/mill/package.scala)0
-rw-r--r--main/test/resources/examples/javac/build.sc (renamed from core/test/resources/examples/javac/build.sc)0
-rw-r--r--main/test/resources/examples/javac/resources/hello.txt (renamed from core/test/resources/examples/javac/resources/hello.txt)0
-rw-r--r--main/test/resources/examples/javac/src/Bar.java (renamed from core/test/resources/examples/javac/src/Bar.java)0
-rw-r--r--main/test/resources/examples/javac/src/Foo.java (renamed from core/test/resources/examples/javac/src/Foo.java)0
-rw-r--r--main/test/src/mill/TestMain.scala (renamed from core/test/src/mill/TestMain.scala)0
-rw-r--r--main/test/src/mill/UTestFramework.scala (renamed from core/test/src/mill/UTestFramework.scala)0
-rw-r--r--main/test/src/mill/define/ApplicativeTests.scala (renamed from core/test/src/mill/define/ApplicativeTests.scala)0
-rw-r--r--main/test/src/mill/define/BasePathTests.scala (renamed from core/test/src/mill/define/BasePathTests.scala)0
-rw-r--r--main/test/src/mill/define/CacherTests.scala (renamed from core/test/src/mill/define/CacherTests.scala)0
-rw-r--r--main/test/src/mill/define/DiscoverTests.scala (renamed from core/test/src/mill/define/DiscoverTests.scala)0
-rw-r--r--main/test/src/mill/define/GraphTests.scala (renamed from core/test/src/mill/define/GraphTests.scala)0
-rw-r--r--main/test/src/mill/define/MacroErrorTests.scala (renamed from core/test/src/mill/define/MacroErrorTests.scala)0
-rw-r--r--main/test/src/mill/eval/CrossTests.scala (renamed from core/test/src/mill/eval/CrossTests.scala)0
-rw-r--r--main/test/src/mill/eval/EvaluationTests.scala (renamed from core/test/src/mill/eval/EvaluationTests.scala)0
-rw-r--r--main/test/src/mill/eval/FailureTests.scala (renamed from core/test/src/mill/eval/FailureTests.scala)0
-rw-r--r--main/test/src/mill/eval/JavaCompileJarTests.scala (renamed from core/test/src/mill/eval/JavaCompileJarTests.scala)2
-rw-r--r--main/test/src/mill/eval/ModuleTests.scala (renamed from core/test/src/mill/eval/ModuleTests.scala)0
-rw-r--r--main/test/src/mill/eval/TarjanTests.scala (renamed from core/test/src/mill/eval/TarjanTests.scala)0
-rw-r--r--main/test/src/mill/eval/TaskTests.scala (renamed from core/test/src/mill/eval/TaskTests.scala)0
-rw-r--r--main/test/src/mill/main/JavaCompileJarTests.scala (renamed from core/test/src/mill/main/JavaCompileJarTests.scala)2
-rw-r--r--main/test/src/mill/main/MainTests.scala (renamed from core/test/src/mill/main/MainTests.scala)2
-rw-r--r--main/test/src/mill/util/ParseArgsTest.scala (renamed from core/test/src/mill/main/ParseArgsTest.scala)2
-rw-r--r--main/test/src/mill/util/ScriptTestSuite.scala (renamed from core/test/src/mill/util/ScriptTestSuite.scala)2
-rw-r--r--main/test/src/mill/util/TestEvaluator.scala (renamed from core/test/src/mill/util/TestEvaluator.scala)0
-rw-r--r--main/test/src/mill/util/TestGraphs.scala (renamed from core/test/src/mill/util/TestGraphs.scala)0
-rw-r--r--main/test/src/mill/util/TestUtil.scala (renamed from core/test/src/mill/util/TestUtil.scala)2
-rw-r--r--scalalib/src/mill/scalalib/PublishModule.scala6
54 files changed, 239 insertions, 165 deletions
diff --git a/build.sbt b/build.sbt
index b750546f..403d036f 100644
--- a/build.sbt
+++ b/build.sbt
@@ -73,14 +73,24 @@ lazy val core = project
libraryDependencies ++= Seq(
"org.scala-lang" % "scala-reflect" % scalaVersion.value % "provided",
"com.lihaoyi" %% "sourcecode" % "0.1.4",
- "com.lihaoyi" %% "pprint" % "0.5.3",
"com.lihaoyi" % "ammonite" % "1.0.3-21-05b5d32" cross CrossVersion.full
),
sourceGenerators in Compile += {
ammoniteRun(sourceManaged in Compile, List("shared.sc", "generateCoreSources", _))
.taskValue
.map(x => (x ** "*.scala").get)
- },
+ }
+ )
+
+lazy val main = project
+ .dependsOn(core)
+ .settings(
+ sharedSettings,
+ pluginSettings,
+ name := "mill-main",
+ libraryDependencies ++= Seq(
+ "org.scala-lang" % "scala-reflect" % scalaVersion.value % "provided"
+ ),
sourceGenerators in Test += {
ammoniteRun(sourceManaged in Test, List("shared.sc", "generateCoreTestSources", _))
@@ -105,7 +115,7 @@ lazy val scalaWorkerProps = Def.task{
}
lazy val scalalib = project
- .dependsOn(core % "compile->compile;test->test")
+ .dependsOn(main % "compile->compile;test->test")
.settings(
sharedSettings,
pluginSettings,
@@ -118,7 +128,7 @@ lazy val scalalib = project
)
lazy val scalaworker: Project = project
- .dependsOn(core, scalalib)
+ .dependsOn(main, scalalib)
.settings(
sharedSettings,
pluginSettings,
@@ -140,6 +150,7 @@ def genTask(m: Project) = Def.task{
(
genTask(moduledefs).value ++
genTask(core).value ++
+ genTask(main).value ++
genTask(scalalib).value ++
genTask(scalajslib).value
).mkString(",")
@@ -220,7 +231,7 @@ val testRepos = Map(
)
lazy val integration = project
- .dependsOn(core % "compile->compile;test->test", scalalib, scalajslib)
+ .dependsOn(main % "compile->compile;test->test", scalalib, scalajslib)
.settings(
sharedSettings,
name := "integration",
diff --git a/build.sc b/build.sc
index d8523013..07eb543b 100755
--- a/build.sc
+++ b/build.sc
@@ -52,8 +52,8 @@ trait MillModule extends MillPublishModule{ outer =>
class Tests(ctx0: mill.define.Ctx) extends mill.Module()(ctx0) with super.Tests{
def forkArgs = T{ testArgs() }
def moduleDeps =
- if (this == core.test) Seq(core)
- else Seq(outer, core.test)
+ if (this == main.test) Seq(main)
+ else Seq(outer, main.test)
def ivyDeps = Agg(ivy"com.lihaoyi::utest:0.6.0")
def testFramework = "mill.UTestFramework"
def scalacPluginClasspath = super.scalacPluginClasspath() ++ Seq(moduledefs.jar())
@@ -69,13 +69,24 @@ object core extends MillModule {
def ivyDeps = Agg(
ivy"com.lihaoyi::sourcecode:0.1.4",
- ivy"com.lihaoyi::pprint:0.5.3",
ivy"com.lihaoyi:::ammonite:1.0.3-21-05b5d32"
)
def generatedSources = T.sources {
shared.generateCoreSources(T.ctx().dest)
}
+}
+
+object main extends MillModule {
+ def moduleDeps = Seq(core)
+
+ def compileIvyDeps = Agg(
+ ivy"org.scala-lang:scala-reflect:${scalaVersion()}"
+ )
+
+ def generatedSources = T.sources {
+ shared.generateCoreSources(T.ctx().dest)
+ }
val test = new Tests(implicitly)
class Tests(ctx0: mill.define.Ctx) extends super.Tests(ctx0){
@@ -87,7 +98,7 @@ object core extends MillModule {
object scalaworker extends MillModule{
- def moduleDeps = Seq(core, scalalib)
+ def moduleDeps = Seq(main, scalalib)
def ivyDeps = Agg(
ivy"org.scala-sbt::zinc:1.0.5"
@@ -99,7 +110,7 @@ object scalaworker extends MillModule{
object scalalib extends MillModule {
- def moduleDeps = Seq(core)
+ def moduleDeps = Seq(main)
def ivyDeps = Agg(
ivy"org.scala-sbt:test-interface:1.0"
@@ -115,6 +126,7 @@ object scalalib extends MillModule {
val genIdeaArgs =
genTask(moduledefs)() ++
genTask(core)() ++
+ genTask(main)() ++
genTask(scalalib)() ++
genTask(scalajslib)()
diff --git a/ci/test-mill-built.sh b/ci/test-mill-built.sh
index 52be8851..7a3e8e57 100755
--- a/ci/test-mill-built.sh
+++ b/ci/test-mill-built.sh
@@ -13,7 +13,7 @@ target/bin/mill devAssembly
# Second build & run tests using Mill
-out/devAssembly/dest/out.jar all {core,scalalib,scalajslib}.test devAssembly
+out/devAssembly/dest/out.jar all {main,scalalib,scalajslib}.test devAssembly
out/devAssembly/dest/out.jar integration.test mill.integration.AmmoniteTests
out/devAssembly/dest/out.jar integration.test "mill.integration.{AcyclicTests,BetterFilesTests,JawnTests}"
out/devAssembly/dest/out.jar devAssembly
diff --git a/ci/test-mill-release.sh b/ci/test-mill-release.sh
index e3755e93..6c38c764 100755
--- a/ci/test-mill-release.sh
+++ b/ci/test-mill-release.sh
@@ -17,7 +17,7 @@ git clean -xdf
# Second build & run tests using Mill
-~/mill-release all {core,scalalib,scalajslib}.test devAssembly
+~/mill-release all {main,scalalib,scalajslib}.test devAssembly
~/mill-release integration.test mill.integration.AmmoniteTests
~/mill-release integration.test "mill.integration.{AcyclicTests,BetterFilesTests,JawnTests}"
~/mill-release devAssembly
diff --git a/ci/test-sbt-built.sh b/ci/test-sbt-built.sh
index 3a60cbd3..bafb5942 100755
--- a/ci/test-sbt-built.sh
+++ b/ci/test-sbt-built.sh
@@ -8,7 +8,7 @@ git clean -xdf
sbt bin/test:assembly
# Run tests using Mill built using SBT
-target/bin/mill all {core,scalalib,scalajslib}.test devAssembly
+target/bin/mill all {main,scalalib,scalajslib}.test devAssembly
target/bin/mill integration.test mill.integration.AmmoniteTests
target/bin/mill integration.test "mill.integration.{AcyclicTests,BetterFilesTests,JawnTests}"
target/bin/mill devAssembly
diff --git a/ci/test-sbt.sh b/ci/test-sbt.sh
index f77456f7..79d93cf5 100755
--- a/ci/test-sbt.sh
+++ b/ci/test-sbt.sh
@@ -6,6 +6,6 @@ set -eux
git clean -xdf
# First build & run tests using SBT
-sbt core/test scalalib/test scalajslib/test
+sbt core/test main/test scalalib/test scalajslib/test
sbt integration/test
sbt bin/test:assembly
diff --git a/ci/test_all.sh b/ci/test_all.sh
deleted file mode 100755
index a04f7119..00000000
--- a/ci/test_all.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-
-set -eux
-
-# Starting from scratch...
-git clean -xdf
-
-# First build & run tests using SBT
-sbt core/test scalalib/test scalajslib/test integration/test bin/test:assembly
-
-# Run tests using Mill built using SBT
-target/bin/mill all {core,scalalib,scalajslib,integration}.test devAssembly
-
-# Second build & run tests using Mill
-out/devAssembly/dest/out.jar all {core,scalalib,scalajslib,integration}.test devAssembly \ No newline at end of file
diff --git a/core/src/mill/define/BaseModule.scala b/core/src/mill/define/BaseModule.scala
index 5253e691..fccb19ae 100644
--- a/core/src/mill/define/BaseModule.scala
+++ b/core/src/mill/define/BaseModule.scala
@@ -1,8 +1,6 @@
package mill.define
-import mill.main.Router.Overrides
import ammonite.ops.Path
-import mill.main.ParseArgs
object BaseModule{
case class Implicit(value: BaseModule)
@@ -11,7 +9,8 @@ object BaseModule{
abstract class BaseModule(millSourcePath0: Path, external0: Boolean = false)
(implicit millModuleEnclosing0: sourcecode.Enclosing,
millModuleLine0: sourcecode.Line,
- millName0: sourcecode.Name)
+ millName0: sourcecode.Name,
+ millFile0: sourcecode.File)
extends Module()(
mill.define.Ctx.make(
implicitly,
@@ -19,8 +18,9 @@ abstract class BaseModule(millSourcePath0: Path, external0: Boolean = false)
implicitly,
BasePath(millSourcePath0),
Segments(),
- Overrides(0),
- Ctx.External(external0)
+ mill.util.Router.Overrides(0),
+ Ctx.External(external0),
+ millFile0
)
){
// A BaseModule should provide an empty Segments list to it's children, since
diff --git a/core/src/mill/define/Ctx.scala b/core/src/mill/define/Ctx.scala
index 11e9e1f5..6075b804 100644
--- a/core/src/mill/define/Ctx.scala
+++ b/core/src/mill/define/Ctx.scala
@@ -1,6 +1,6 @@
package mill.define
-import mill.main.Router.Overrides
+
import ammonite.ops.{Path, RelPath}
import scala.annotation.implicitNotFound
@@ -57,7 +57,8 @@ case class Ctx(enclosing: String,
millSourcePath: Path,
segments: Segments,
overrides: Int,
- external: Boolean){
+ external: Boolean,
+ fileName: String){
}
object Ctx{
@@ -67,8 +68,9 @@ object Ctx{
millName0: sourcecode.Name,
millModuleBasePath0: BasePath,
segments0: Segments,
- overrides0: mill.main.Router.Overrides,
- external0: External): Ctx = {
+ overrides0: mill.util.Router.Overrides,
+ external0: External,
+ fileName: sourcecode.File): Ctx = {
Ctx(
millModuleEnclosing0.value,
millModuleLine0.value,
@@ -76,7 +78,8 @@ object Ctx{
millModuleBasePath0.value,
segments0,
overrides0.value,
- external0.value
+ external0.value,
+ fileName.value
)
}
} \ No newline at end of file
diff --git a/core/src/mill/define/Discover.scala b/core/src/mill/define/Discover.scala
index fd5bd449..1b6b002a 100644
--- a/core/src/mill/define/Discover.scala
+++ b/core/src/mill/define/Discover.scala
@@ -1,6 +1,7 @@
package mill.define
+import mill.util.Router.EntryPoint
+
import language.experimental.macros
-import mill.main.Router.{EntryPoint, Overrides}
import sourcecode.Compat.Context
import scala.collection.mutable
@@ -41,7 +42,7 @@ object Discover {
}
rec(weakTypeOf[T])
- val router = new mill.main.Router(c)
+ val router = new mill.util.Router(c)
val mapping = for{
discoveredModuleType <- seen
val curCls = discoveredModuleType.asInstanceOf[router.c.Type]
@@ -57,7 +58,7 @@ object Discover {
val (overrides, routes) = overridesRoutes.unzip
val lhs = q"classOf[${discoveredModuleType.typeSymbol.asClass}]"
val clsType = discoveredModuleType.typeSymbol.asClass
- val rhs = q"scala.Seq[(Int, mill.main.Router.EntryPoint[_])](..$overridesRoutes)"
+ val rhs = q"scala.Seq[(Int, mill.util.Router.EntryPoint[_])](..$overridesRoutes)"
q"$lhs -> $rhs"
}
diff --git a/core/src/mill/define/Module.scala b/core/src/mill/define/Module.scala
index a53ed345..bfc15191 100644
--- a/core/src/mill/define/Module.scala
+++ b/core/src/mill/define/Module.scala
@@ -2,12 +2,10 @@ package mill.define
import java.lang.reflect.Modifier
-import mill.main.Router.{EntryPoint, Overrides}
import ammonite.ops.Path
import scala.language.experimental.macros
import scala.reflect.ClassTag
-import scala.reflect.macros.blackbox
/**
* `Module` is a class meant to be extended by `trait`s *only*, in order to
* propagate the implicit parameters forward to the final concrete
diff --git a/core/src/mill/eval/Evaluator.scala b/core/src/mill/eval/Evaluator.scala
index 347ad321..70fab152 100644
--- a/core/src/mill/eval/Evaluator.scala
+++ b/core/src/mill/eval/Evaluator.scala
@@ -2,7 +2,7 @@ package mill.eval
import java.net.URLClassLoader
-import mill.main.Router.EntryPoint
+import mill.util.Router.EntryPoint
import ammonite.ops._
import ammonite.runtime.SpecialClassLoader
import mill.define.{Ctx => _, _}
@@ -330,6 +330,12 @@ class Evaluator[T](val outPath: Path,
object Evaluator{
+ // This needs to be a ThreadLocal because we need to pass it into the body of
+ // the TargetScopt#read call, which does not accept additional parameters.
+ // Until we migrate our CLI parsing off of Scopt (so we can pass the BaseModule
+ // in directly) we are forced to pass it in via a ThreadLocal
+ val currentEvaluator = new ThreadLocal[mill.eval.Evaluator[_]]
+
case class Paths(out: Path,
dest: Path,
meta: Path,
diff --git a/core/src/mill/main/MainModule.scala b/core/src/mill/main/MainModule.scala
deleted file mode 100644
index fd46fb77..00000000
--- a/core/src/mill/main/MainModule.scala
+++ /dev/null
@@ -1,27 +0,0 @@
-package mill.main
-
-trait MainModule extends mill.Module{
- implicit def millDiscover: mill.define.Discover[_]
- implicit def millScoptTargetReads[T] = new mill.main.TargetScopt[T]()
- implicit def millScoptEvaluatorReads[T] = new mill.main.EvaluatorScopt[T]()
- def resolve(targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{
- targets.flatMap(_.items).foreach(println)
- }
- def all(evaluator: mill.eval.Evaluator[Any],
- targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{
- val (watched, res) = mill.main.RunScript.evaluate(
- evaluator,
- mill.util.Strict.Agg.from(targets.flatMap(_.items))
- )
- }
- def show(evaluator: mill.eval.Evaluator[Any],
- targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{
- val (watched, res) = mill.main.RunScript.evaluate(
- evaluator,
- mill.util.Strict.Agg.from(targets.flatMap(_.items))
- )
- for(json <- res.right.get.flatMap(_._2)){
- println(json)
- }
- }
-}
diff --git a/core/src/mill/main/ParseArgs.scala b/core/src/mill/util/ParseArgs.scala
index bafcd907..315edabc 100644
--- a/core/src/mill/main/ParseArgs.scala
+++ b/core/src/mill/util/ParseArgs.scala
@@ -1,6 +1,5 @@
-package mill.main
+package mill.util
-import mill.util.EitherOps
import fastparse.all._
import mill.define.{Segment, Segments}
diff --git a/core/src/mill/main/Router.scala b/core/src/mill/util/Router.scala
index 935ffc72..f628730b 100644
--- a/core/src/mill/main/Router.scala
+++ b/core/src/mill/util/Router.scala
@@ -1,12 +1,12 @@
-package mill.main
-
+package mill.util
import ammonite.main.Compat
+import language.experimental.macros
import scala.annotation.StaticAnnotation
import scala.collection.mutable
-import scala.language.experimental.macros
import scala.reflect.macros.blackbox.Context
+
/**
* More or less a minimal version of Autowire's Server that lets you generate
* a set of "routes" from the methods defined in an object, and call them
@@ -24,7 +24,7 @@ object Router{
implicit def generate: Overrides = macro impl
def impl(c: Context): c.Tree = {
import c.universe._
- q"new _root_.mill.main.Router.Overrides(${c.internal.enclosingOwner.overrides.length})"
+ q"new _root_.mill.util.Router.Overrides(${c.internal.enclosingOwner.overrides.length})"
}
}
@@ -262,8 +262,8 @@ object Router{
}
def makeReadCall(dict: Map[String, String],
- default: => Option[Any],
- arg: ArgSig[_, _]) = {
+ default: => Option[Any],
+ arg: ArgSig[_, _]) = {
read(dict, default, arg, arg.reads.reads(_))
}
def makeReadVarargsCall(arg: ArgSig[_, _], values: Seq[String]) = {
@@ -271,6 +271,7 @@ object Router{
}
}
+
class Router [C <: Context](val c: C) {
import c.universe._
def getValsOrMeths(curCls: Type): Iterable[MethodSymbol] = {
@@ -365,7 +366,7 @@ class Router [C <: Context](val c: C) {
}
val argSig = q"""
- mill.main.Router.ArgSig[$curCls, $docUnwrappedType](
+ mill.util.Router.ArgSig[$curCls, $docUnwrappedType](
${arg.name.toString},
${docUnwrappedType.toString + (if(vararg) "*" else "")},
$docTree,
@@ -375,12 +376,12 @@ class Router [C <: Context](val c: C) {
val reader =
if(vararg) q"""
- mill.main.Router.makeReadVarargsCall(
+ mill.util.Router.makeReadVarargsCall(
$argSig,
$extrasSymbol
)
""" else q"""
- mill.main.Router.makeReadCall(
+ mill.util.Router.makeReadCall(
$argListSymbol,
$default,
$argSig
@@ -403,7 +404,7 @@ class Router [C <: Context](val c: C) {
val res = q"""
- mill.main.Router.EntryPoint[$curCls](
+ mill.util.Router.EntryPoint[$curCls](
${meth.name.toString},
scala.Seq(..$argSigs),
${methodDoc match{
@@ -412,12 +413,12 @@ class Router [C <: Context](val c: C) {
}},
${varargs.contains(true)},
($baseArgSym: $curCls, $argListSymbol: Map[String, String], $extrasSymbol: Seq[String]) =>
- mill.main.Router.validate(Seq(..$readArgs)) match{
- case mill.main.Router.Result.Success(List(..$argNames)) =>
- mill.main.Router.Result.Success(
+ mill.util.Router.validate(Seq(..$readArgs)) match{
+ case mill.util.Router.Result.Success(List(..$argNames)) =>
+ mill.util.Router.Result.Success(
$baseArgSym.${meth.name.toTermName}(..$argNameCasts)
)
- case x: mill.main.Router.Result.Error => x
+ case x: mill.util.Router.Result.Error => x
},
ammonite.main.Router.Overrides()
)
@@ -439,4 +440,3 @@ class Router [C <: Context](val c: C) {
}
}
}
-
diff --git a/core/src/mill/main/Scripts.scala b/core/src/mill/util/Scripts.scala
index 334c610f..7dde8252 100644
--- a/core/src/mill/main/Scripts.scala
+++ b/core/src/mill/util/Scripts.scala
@@ -1,14 +1,14 @@
-package mill.main
-import java.nio.file.NoSuchFileException
+package mill.util
+import java.nio.file.NoSuchFileException
-import mill.main.Router.{ArgSig, EntryPoint}
import ammonite.ops._
import ammonite.runtime.Evaluator.AmmoniteExit
import ammonite.util.Name.backtickWrap
import ammonite.util.Util.CodeSource
import ammonite.util.{Name, Res, Util}
import fastparse.utils.Utils._
+import mill.util.Router.{ArgSig, EntryPoint}
/**
* Logic around using Ammonite as a script-runner; invoking scripts via the
diff --git a/core/src/mill/util/Watched.scala b/core/src/mill/util/Watched.scala
new file mode 100644
index 00000000..f1ef4fee
--- /dev/null
+++ b/core/src/mill/util/Watched.scala
@@ -0,0 +1,8 @@
+package mill.util
+
+import mill.eval.PathRef
+
+case class Watched[T](value: T, watched: Seq[PathRef])
+object Watched{
+ implicit def readWrite[T: upickle.default.ReadWriter] = upickle.default.macroRW[Watched[T]]
+}
diff --git a/core/src/mill/Main.scala b/main/src/mill/Main.scala
index 3025994c..3025994c 100644
--- a/core/src/mill/Main.scala
+++ b/main/src/mill/Main.scala
diff --git a/core/src/mill/main/MagicScopt.scala b/main/src/mill/main/MagicScopt.scala
index acba57cb..e18816c8 100644
--- a/core/src/mill/main/MagicScopt.scala
+++ b/main/src/mill/main/MagicScopt.scala
@@ -1,28 +1,25 @@
package mill.main
import mill.define.ExternalModule
-import mill.main.ParseArgs
+import mill.eval.{Evaluator, PathRef}
+import mill.util.ParseArgs
object MagicScopt{
- // This needs to be a ThreadLocal because we need to pass it into the body of
- // the TargetScopt#read call, which does not accept additional parameters.
- // Until we migrate our CLI parsing off of Scopt (so we can pass the BaseModule
- // in directly) we are forced to pass it in via a ThreadLocal
- val currentEvaluator = new ThreadLocal[mill.eval.Evaluator[_]]
- case class Tasks[T](items: Seq[mill.define.NamedTask[T]])
+
+ case class Tasks[T](value: Seq[mill.define.NamedTask[T]])
}
class EvaluatorScopt[T]()
extends scopt.Read[mill.eval.Evaluator[T]]{
def arity = 0
def reads = s => try{
- MagicScopt.currentEvaluator.get.asInstanceOf[mill.eval.Evaluator[T]]
+ Evaluator.currentEvaluator.get.asInstanceOf[mill.eval.Evaluator[T]]
}
}
class TargetScopt[T]()
extends scopt.Read[MagicScopt.Tasks[T]]{
def arity = 0
def reads = s => {
- val rootModule = MagicScopt.currentEvaluator.get.rootModule
+ val rootModule = Evaluator.currentEvaluator.get.rootModule
val d = rootModule.millDiscover
val (expanded, leftover) = ParseArgs(Seq(s)).fold(e => throw new Exception(e), identity)
val resolved = expanded.map{
diff --git a/main/src/mill/main/MainModule.scala b/main/src/mill/main/MainModule.scala
new file mode 100644
index 00000000..012ecce5
--- /dev/null
+++ b/main/src/mill/main/MainModule.scala
@@ -0,0 +1,56 @@
+package mill.main
+
+import mill.util
+import mill.main.RunScript
+import mill.util.Watched
+import pprint.{Renderer, Truncated}
+
+trait MainModule extends mill.Module{
+
+ implicit def millDiscover: mill.define.Discover[_]
+ implicit def millScoptTargetReads[T] = new mill.main.TargetScopt[T]()
+ implicit def millScoptEvaluatorReads[T] = new mill.main.EvaluatorScopt[T]()
+ mill.define.Ctx.make
+ def resolve(targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{
+ targets.flatMap(_.value).foreach(println)
+ }
+ def describe(evaluator: mill.eval.Evaluator[Any],
+ targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{
+ for{
+ t <- targets
+ target <- t.value
+ tree = ReplApplyHandler.pprintTask(target, evaluator)
+ val defaults = pprint.PPrinter()
+ val renderer = new Renderer(
+ defaults.defaultWidth,
+ defaults.colorApplyPrefix,
+ defaults.colorLiteral,
+ defaults.defaultIndent
+ )
+ val rendered = renderer.rec(tree, 0, 0).iter
+ val truncated = new Truncated(rendered, defaults.defaultWidth, defaults.defaultHeight)
+ str <- truncated ++ Iterator("\n")
+ } {
+ print(str)
+ }
+ }
+ def all(evaluator: mill.eval.Evaluator[Any],
+ targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{
+ val (watched, res) = RunScript.evaluate(
+ evaluator,
+ mill.util.Strict.Agg.from(targets.flatMap(_.value))
+ )
+ Watched((), watched)
+ }
+ def show(evaluator: mill.eval.Evaluator[Any],
+ targets: mill.main.MagicScopt.Tasks[Any]*) = mill.T.command{
+ val (watched, res) = mill.main.RunScript.evaluate(
+ evaluator,
+ mill.util.Strict.Agg.from(targets.flatMap(_.value))
+ )
+ for(json <- res.right.get.flatMap(_._2)){
+ println(json)
+ }
+ Watched((), watched)
+ }
+}
diff --git a/core/src/mill/main/MainRunner.scala b/main/src/mill/main/MainRunner.scala
index 9004de39..c073e583 100644
--- a/core/src/mill/main/MainRunner.scala
+++ b/main/src/mill/main/MainRunner.scala
@@ -8,6 +8,7 @@ import ammonite.util._
import mill.define.Discover
import mill.eval.{Evaluator, PathRef}
import mill.util.PrintLogger
+import mill.main.RunScript
import upickle.Js
/**
diff --git a/core/src/mill/main/ReplApplyHandler.scala b/main/src/mill/main/ReplApplyHandler.scala
index 0849f2c8..76ef354f 100644
--- a/core/src/mill/main/ReplApplyHandler.scala
+++ b/main/src/mill/main/ReplApplyHandler.scala
@@ -30,6 +30,60 @@ object ReplApplyHandler{
)
)
}
+ def pprintCross(c: mill.define.Cross[_], evaluator: Evaluator[_]) = {
+ pprint.Tree.Lazy( ctx =>
+ Iterator(c.millOuterCtx.enclosing , ":", c.millOuterCtx.lineNum.toString, ctx.applyPrefixColor("\nChildren:").toString) ++
+ c.items.iterator.map(x =>
+ "\n (" + x._1.map(pprint.PPrinter.BlackWhite.apply(_)).mkString(", ") + ")"
+ )
+ )
+ }
+ def pprintModule(m: mill.define.Module, evaluator: Evaluator[_]) = {
+ pprint.Tree.Lazy( ctx =>
+ Iterator(m.millInternal.millModuleEnclosing, ":", m.millInternal.millModuleLine.toString) ++
+ (if (m.millInternal.reflect[mill.Module].isEmpty) Nil
+ else
+ ctx.applyPrefixColor("\nChildren:").toString +:
+ m.millInternal.reflect[mill.Module].map("\n ." + _.millOuterCtx.segment.pathSegments.mkString("."))) ++
+ (evaluator.discover.value.get(m.getClass) match{
+ case None => Nil
+ case Some(commands) =>
+ ctx.applyPrefixColor("\nCommands:").toString +: commands.map{c =>
+ "\n ." + c._2.name + "(" +
+ c._2.argSignatures.map(s => s.name + ": " + s.typeString).mkString(", ") +
+ ")()"
+ }
+ }) ++
+ (if (m.millInternal.reflect[Target[_]].isEmpty) Nil
+ else {
+ Seq(ctx.applyPrefixColor("\nTargets:").toString) ++
+ m.millInternal.reflect[Target[_]].sortBy(_.label).map(t =>
+ "\n ." + t.label + "()"
+ )
+ })
+
+ )
+ }
+ def pprintTask(t: NamedTask[_], evaluator: Evaluator[_]) = {
+ val seen = mutable.Set.empty[Task[_]]
+ def rec(t: Task[_]): Seq[Segments] = {
+ if (seen(t)) Nil // do nothing
+ else t match {
+ case t: Target[_] if evaluator.rootModule.millInternal.targets.contains(t) =>
+ Seq(t.ctx.segments)
+ case _ =>
+ seen.add(t)
+ t.inputs.flatMap(rec)
+ }
+ }
+ pprint.Tree.Lazy(ctx =>
+ Iterator(
+ t.toString, "(", t.ctx.fileName, ":", t.ctx.lineNum.toString, ")",
+ t.ctx.lineNum.toString, "\n", ctx.applyPrefixColor("Inputs:").toString
+ ) ++ t.inputs.iterator.flatMap(rec).map("\n " + _.render)
+ )
+ }
+
}
class ReplApplyHandler(pprinter0: pprint.PPrinter,
evaluator: Evaluator[_]) extends ApplyHandler[Task] {
@@ -70,53 +124,11 @@ class ReplApplyHandler(pprinter0: pprint.PPrinter,
val millHandlers: PartialFunction[Any, pprint.Tree] = {
case c: Cross[_] =>
- pprint.Tree.Lazy( ctx =>
- Iterator(c.millOuterCtx.enclosing , ":", c.millOuterCtx.lineNum.toString, ctx.applyPrefixColor("\nChildren:").toString) ++
- c.items.iterator.map(x =>
- "\n (" + x._1.map(pprint.PPrinter.BlackWhite.apply(_)).mkString(", ") + ")"
- )
- )
+ ReplApplyHandler.pprintCross(c, evaluator)
case m: mill.Module if evaluator.rootModule.millInternal.modules.contains(m) =>
- pprint.Tree.Lazy( ctx =>
- Iterator(m.millInternal.millModuleEnclosing, ":", m.millInternal.millModuleLine.toString) ++
- (if (m.millInternal.reflect[mill.Module].isEmpty) Nil
- else
- ctx.applyPrefixColor("\nChildren:").toString +:
- m.millInternal.reflect[mill.Module].map("\n ." + _.millOuterCtx.segment.pathSegments.mkString("."))) ++
- (evaluator.discover.value.get(m.getClass) match{
- case None => Nil
- case Some(commands) =>
- ctx.applyPrefixColor("\nCommands:").toString +: commands.map{c =>
- "\n ." + c._2.name + "(" +
- c._2.argSignatures.map(s => s.name + ": " + s.typeString).mkString(", ") +
- ")()"
- }
- }) ++
- (if (m.millInternal.reflect[Target[_]].isEmpty) Nil
- else {
- Seq(ctx.applyPrefixColor("\nTargets:").toString) ++
- m.millInternal.reflect[Target[_]].sortBy(_.label).map(t =>
- "\n ." + t.label + "()"
- )
- })
-
- )
+ ReplApplyHandler.pprintModule(m, evaluator)
case t: mill.define.Target[_] if evaluator.rootModule.millInternal.targets.contains(t) =>
- val seen = mutable.Set.empty[Task[_]]
- def rec(t: Task[_]): Seq[Segments] = {
- if (seen(t)) Nil // do nothing
- else t match {
- case t: Target[_] if evaluator.rootModule.millInternal.targets.contains(t) =>
- Seq(t.ctx.segments)
- case _ =>
- seen.add(t)
- t.inputs.flatMap(rec)
- }
- }
- pprint.Tree.Lazy(ctx =>
- Iterator(t.ctx.enclosing, ":", t.ctx.lineNum.toString, "\n", ctx.applyPrefixColor("Inputs:").toString) ++
- t.inputs.iterator.flatMap(rec).map("\n " + _.render)
- )
+ ReplApplyHandler.pprintTask(t, evaluator)
}
val pprinter = pprinter0.copy(
diff --git a/core/src/mill/main/Resolve.scala b/main/src/mill/main/Resolve.scala
index 1932c241..c134d70d 100644
--- a/core/src/mill/main/Resolve.scala
+++ b/main/src/mill/main/Resolve.scala
@@ -2,8 +2,9 @@ package mill.main
import mill.define._
import mill.define.TaskModule
-import mill.main.Router.EntryPoint
-import ammonite.util.{Res}
+import ammonite.util.Res
+import mill.util.Router.EntryPoint
+import mill.util.Scripts
object Resolve {
def resolve[T, V](remainingSelector: List[Segment],
@@ -23,7 +24,7 @@ object Resolve {
.find(_.label == last)
.map(Right(_))
- def shimArgsig[T](a: mill.main.Router.ArgSig[T, _]) = {
+ def shimArgsig[T](a: mill.util.Router.ArgSig[T, _]) = {
ammonite.main.Router.ArgSig[T](
a.name,
a.typeString,
@@ -36,7 +37,7 @@ object Resolve {
if cls.isAssignableFrom(target.getClass)
ep <- entryPoints
if ep._2.name == name
- } yield mill.main.Scripts.runMainMethod(
+ } yield Scripts.runMainMethod(
target,
ep._2.asInstanceOf[EntryPoint[mill.Module]],
ammonite.main.Scripts.groupArgs(rest.toList)
diff --git a/core/src/mill/main/RunScript.scala b/main/src/mill/main/RunScript.scala
index 17d520e7..bd21a821 100644
--- a/core/src/mill/main/RunScript.scala
+++ b/main/src/mill/main/RunScript.scala
@@ -7,10 +7,10 @@ import ammonite.ops.{Path, read}
import ammonite.runtime.SpecialClassLoader
import ammonite.util.Util.CodeSource
import ammonite.util.{Name, Res, Util}
-import mill.{PathRef, define}
+import mill.define
import mill.define.{Discover, ExternalModule, Segment, Task}
-import mill.eval.{Evaluator, Result}
-import mill.util.{EitherOps, Logger}
+import mill.eval.{Evaluator, PathRef, Result}
+import mill.util.{EitherOps, Logger, ParseArgs, Watched}
import mill.util.Strict.Agg
import upickle.Js
@@ -155,23 +155,32 @@ object RunScript{
// module we still want you to be able to resolve targets from your
// main build. Resolving targets from external builds as CLI arguments
// is not currently supported
- mill.main.MagicScopt.currentEvaluator.set(evaluator)
+ mill.eval.Evaluator.currentEvaluator.set(evaluator)
mill.main.Resolve.resolve(
sel.value.toList, rootModule,
discover,
args, crossSelectors.toList, Nil
)
} finally{
- mill.main.MagicScopt.currentEvaluator.set(null)
+ mill.eval.Evaluator.currentEvaluator.set(null)
}
}
EitherOps.sequence(selected)
}
- (watched, res) = evaluate(
+ } yield {
+ val (watched, res) = evaluate(
evaluator,
Agg.from(targets.flatten.distinct)
)
- } yield (watched, res)
+
+ val watched2 = for{
+ x <- res.right.toSeq
+ (Watched(_, extraWatched), _) <- x
+ w <- extraWatched
+ } yield w
+
+ (watched ++ watched2, res)
+ }
}
def evaluate(evaluator: Evaluator[_],
diff --git a/core/src/mill/modules/Jvm.scala b/main/src/mill/modules/Jvm.scala
index 297dcf1f..297dcf1f 100644
--- a/core/src/mill/modules/Jvm.scala
+++ b/main/src/mill/modules/Jvm.scala
diff --git a/core/src/mill/modules/Util.scala b/main/src/mill/modules/Util.scala
index cef11859..cef11859 100644
--- a/core/src/mill/modules/Util.scala
+++ b/main/src/mill/modules/Util.scala
diff --git a/core/src/mill/package.scala b/main/src/mill/package.scala
index 93916c8b..93916c8b 100644
--- a/core/src/mill/package.scala
+++ b/main/src/mill/package.scala
diff --git a/core/test/resources/examples/javac/build.sc b/main/test/resources/examples/javac/build.sc
index 0783ac17..0783ac17 100644
--- a/core/test/resources/examples/javac/build.sc
+++ b/main/test/resources/examples/javac/build.sc
diff --git a/core/test/resources/examples/javac/resources/hello.txt b/main/test/resources/examples/javac/resources/hello.txt
index 5e1c309d..5e1c309d 100644
--- a/core/test/resources/examples/javac/resources/hello.txt
+++ b/main/test/resources/examples/javac/resources/hello.txt
diff --git a/core/test/resources/examples/javac/src/Bar.java b/main/test/resources/examples/javac/src/Bar.java
index 4e30c89b..4e30c89b 100644
--- a/core/test/resources/examples/javac/src/Bar.java
+++ b/main/test/resources/examples/javac/src/Bar.java
diff --git a/core/test/resources/examples/javac/src/Foo.java b/main/test/resources/examples/javac/src/Foo.java
index e694f9fa..e694f9fa 100644
--- a/core/test/resources/examples/javac/src/Foo.java
+++ b/main/test/resources/examples/javac/src/Foo.java
diff --git a/core/test/src/mill/TestMain.scala b/main/test/src/mill/TestMain.scala
index 80e7e627..80e7e627 100644
--- a/core/test/src/mill/TestMain.scala
+++ b/main/test/src/mill/TestMain.scala
diff --git a/core/test/src/mill/UTestFramework.scala b/main/test/src/mill/UTestFramework.scala
index 6c0d5191..6c0d5191 100644
--- a/core/test/src/mill/UTestFramework.scala
+++ b/main/test/src/mill/UTestFramework.scala
diff --git a/core/test/src/mill/define/ApplicativeTests.scala b/main/test/src/mill/define/ApplicativeTests.scala
index 72b715bb..72b715bb 100644
--- a/core/test/src/mill/define/ApplicativeTests.scala
+++ b/main/test/src/mill/define/ApplicativeTests.scala
diff --git a/core/test/src/mill/define/BasePathTests.scala b/main/test/src/mill/define/BasePathTests.scala
index 1f5b4037..1f5b4037 100644
--- a/core/test/src/mill/define/BasePathTests.scala
+++ b/main/test/src/mill/define/BasePathTests.scala
diff --git a/core/test/src/mill/define/CacherTests.scala b/main/test/src/mill/define/CacherTests.scala
index 606de846..606de846 100644
--- a/core/test/src/mill/define/CacherTests.scala
+++ b/main/test/src/mill/define/CacherTests.scala
diff --git a/core/test/src/mill/define/DiscoverTests.scala b/main/test/src/mill/define/DiscoverTests.scala
index 7621169a..7621169a 100644
--- a/core/test/src/mill/define/DiscoverTests.scala
+++ b/main/test/src/mill/define/DiscoverTests.scala
diff --git a/core/test/src/mill/define/GraphTests.scala b/main/test/src/mill/define/GraphTests.scala
index 7e6680be..7e6680be 100644
--- a/core/test/src/mill/define/GraphTests.scala
+++ b/main/test/src/mill/define/GraphTests.scala
diff --git a/core/test/src/mill/define/MacroErrorTests.scala b/main/test/src/mill/define/MacroErrorTests.scala
index a389feaa..a389feaa 100644
--- a/core/test/src/mill/define/MacroErrorTests.scala
+++ b/main/test/src/mill/define/MacroErrorTests.scala
diff --git a/core/test/src/mill/eval/CrossTests.scala b/main/test/src/mill/eval/CrossTests.scala
index aa12e180..aa12e180 100644
--- a/core/test/src/mill/eval/CrossTests.scala
+++ b/main/test/src/mill/eval/CrossTests.scala
diff --git a/core/test/src/mill/eval/EvaluationTests.scala b/main/test/src/mill/eval/EvaluationTests.scala
index e5f0e57d..e5f0e57d 100644
--- a/core/test/src/mill/eval/EvaluationTests.scala
+++ b/main/test/src/mill/eval/EvaluationTests.scala
diff --git a/core/test/src/mill/eval/FailureTests.scala b/main/test/src/mill/eval/FailureTests.scala
index 90cff686..90cff686 100644
--- a/core/test/src/mill/eval/FailureTests.scala
+++ b/main/test/src/mill/eval/FailureTests.scala
diff --git a/core/test/src/mill/eval/JavaCompileJarTests.scala b/main/test/src/mill/eval/JavaCompileJarTests.scala
index 71feebda..966c272f 100644
--- a/core/test/src/mill/eval/JavaCompileJarTests.scala
+++ b/main/test/src/mill/eval/JavaCompileJarTests.scala
@@ -21,7 +21,7 @@ object JavaCompileJarTests extends TestSuite{
val tests = Tests{
'javac {
- val javacSrcPath = pwd / 'core / 'test / 'resources / 'examples / 'javac
+ val javacSrcPath = pwd / 'main / 'test / 'resources / 'examples / 'javac
val javacDestPath = TestUtil.getOutPath() / 'src
mkdir(javacDestPath / up)
diff --git a/core/test/src/mill/eval/ModuleTests.scala b/main/test/src/mill/eval/ModuleTests.scala
index c6125b32..c6125b32 100644
--- a/core/test/src/mill/eval/ModuleTests.scala
+++ b/main/test/src/mill/eval/ModuleTests.scala
diff --git a/core/test/src/mill/eval/TarjanTests.scala b/main/test/src/mill/eval/TarjanTests.scala
index 2f9d0a4d..2f9d0a4d 100644
--- a/core/test/src/mill/eval/TarjanTests.scala
+++ b/main/test/src/mill/eval/TarjanTests.scala
diff --git a/core/test/src/mill/eval/TaskTests.scala b/main/test/src/mill/eval/TaskTests.scala
index 114a2910..114a2910 100644
--- a/core/test/src/mill/eval/TaskTests.scala
+++ b/main/test/src/mill/eval/TaskTests.scala
diff --git a/core/test/src/mill/main/JavaCompileJarTests.scala b/main/test/src/mill/main/JavaCompileJarTests.scala
index a4c9fafe..fb047675 100644
--- a/core/test/src/mill/main/JavaCompileJarTests.scala
+++ b/main/test/src/mill/main/JavaCompileJarTests.scala
@@ -6,7 +6,7 @@ import utest._
object JavaCompileJarTests extends ScriptTestSuite {
def workspaceSlug = "java-compile-jar"
- def scriptSourcePath = pwd / 'core / 'test / 'resources / 'examples / 'javac
+ def scriptSourcePath = pwd / 'main / 'test / 'resources / 'examples / 'javac
val tests = Tests{
initWorkspace()
'test - {
diff --git a/core/test/src/mill/main/MainTests.scala b/main/test/src/mill/main/MainTests.scala
index 22f93ae0..157fff6f 100644
--- a/core/test/src/mill/main/MainTests.scala
+++ b/main/test/src/mill/main/MainTests.scala
@@ -13,7 +13,7 @@ object MainTests extends TestSuite{
val expected = expected0.map(_.map(_(module)))
val resolved = for{
- selectors <- mill.main.ParseArgs(Seq(selectorString)).map(_._1.head)
+ selectors <- mill.util.ParseArgs(Seq(selectorString)).map(_._1.head)
val crossSelectors = selectors._2.value.map{case Segment.Cross(x) => x.toList.map(_.toString) case _ => Nil}
task <- mill.main.Resolve.resolve(
selectors._2.value.toList, module, discover, Nil, crossSelectors.toList, Nil
diff --git a/core/test/src/mill/main/ParseArgsTest.scala b/main/test/src/mill/util/ParseArgsTest.scala
index 6678f12c..9121bca5 100644
--- a/core/test/src/mill/main/ParseArgsTest.scala
+++ b/main/test/src/mill/util/ParseArgsTest.scala
@@ -1,4 +1,4 @@
-package mill.main
+package mill.util
import mill.define.Segment
import mill.define.Segment.{Cross, Label}
diff --git a/core/test/src/mill/util/ScriptTestSuite.scala b/main/test/src/mill/util/ScriptTestSuite.scala
index 1aa74de1..916d3af6 100644
--- a/core/test/src/mill/util/ScriptTestSuite.scala
+++ b/main/test/src/mill/util/ScriptTestSuite.scala
@@ -3,7 +3,7 @@ package mill.util
import java.io.{ByteArrayInputStream, ByteArrayOutputStream, PrintStream}
import ammonite.ops._
-import mill.main.ParseArgs
+import mill.util.ParseArgs
import utest._
abstract class ScriptTestSuite extends TestSuite{
diff --git a/core/test/src/mill/util/TestEvaluator.scala b/main/test/src/mill/util/TestEvaluator.scala
index a5be0488..a5be0488 100644
--- a/core/test/src/mill/util/TestEvaluator.scala
+++ b/main/test/src/mill/util/TestEvaluator.scala
diff --git a/core/test/src/mill/util/TestGraphs.scala b/main/test/src/mill/util/TestGraphs.scala
index 581d5e0a..581d5e0a 100644
--- a/core/test/src/mill/util/TestGraphs.scala
+++ b/main/test/src/mill/util/TestGraphs.scala
diff --git a/core/test/src/mill/util/TestUtil.scala b/main/test/src/mill/util/TestUtil.scala
index 7ef43943..b30d5d51 100644
--- a/core/test/src/mill/util/TestUtil.scala
+++ b/main/test/src/mill/util/TestUtil.scala
@@ -1,6 +1,6 @@
package mill.util
-import mill.main.Router.Overrides
+import mill.util.Router.Overrides
import ammonite.ops.pwd
import mill.define._
import mill.eval.Result
diff --git a/scalalib/src/mill/scalalib/PublishModule.scala b/scalalib/src/mill/scalalib/PublishModule.scala
index e7f36609..a6835dad 100644
--- a/scalalib/src/mill/scalalib/PublishModule.scala
+++ b/scalalib/src/mill/scalalib/PublishModule.scala
@@ -85,13 +85,14 @@ trait PublishModule extends ScalaModule { outer =>
).publish(artifacts.map{case (a, b) => (a.path, b)}, artifactInfo)
}
}
+
object PublishModule extends ExternalModule{
def publishAll(sonatypeCreds: String,
gpgPassphrase: String,
publishArtifacts: mill.main.MagicScopt.Tasks[(mill.scalalib.publish.Artifact, Seq[(PathRef, String)])],
sonatypeUri: String = "https://oss.sonatype.org/service/local",
sonatypeSnapshotUri: String = "https://oss.sonatype.org/content/repositories/snapshots") = T.command{
- val x: Seq[(Seq[(Path, String)], Artifact)] = Task.sequence(publishArtifacts.items)().map{
+ val x: Seq[(Seq[(Path, String)], Artifact)] = Task.sequence(publishArtifacts.value)().map{
case (a, s) => (s.map{case (p, f) => (p.path, f)}, a)
}
new SonatypePublisher(
@@ -104,7 +105,8 @@ object PublishModule extends ExternalModule{
x:_*
)
}
- implicit def millScoptTargetReads[T] = new mill.main.MagicScopt[T]()
+
+ implicit def millScoptTargetReads[T] = new mill.main.TargetScopt[T]()
def millDiscover: mill.define.Discover[this.type] = mill.define.Discover[this.type]
} \ No newline at end of file