summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild.sc2
-rw-r--r--core/src/main/scala/mill/define/Task.scala61
-rw-r--r--core/src/main/scala/mill/main/RunScript.scala2
-rw-r--r--core/src/test/scala/mill/eval/JavaCompileJarTests.scala8
-rw-r--r--core/src/test/scala/mill/util/TestEvaluator.scala4
-rw-r--r--scalalib/src/main/scala/mill/scalalib/Module.scala12
6 files changed, 62 insertions, 27 deletions
diff --git a/build.sc b/build.sc
index b9f909fb..dfc0e46f 100755
--- a/build.sc
+++ b/build.sc
@@ -108,7 +108,7 @@ val bridges = for{
def sources = T.source {
val path = basePath / 'src
mkdir(path)
- PathRef(path)
+ path
}
def allSources = T{
Seq(PathRef(shared.downloadBridgeSource(T.ctx().dest, crossVersion)))
diff --git a/core/src/main/scala/mill/define/Task.scala b/core/src/main/scala/mill/define/Task.scala
index 39ecb896..b29f173b 100644
--- a/core/src/main/scala/mill/define/Task.scala
+++ b/core/src/main/scala/mill/define/Task.scala
@@ -148,27 +148,62 @@ object Target extends TargetGenerated with Applicative.Applyer[Task, Task, Resul
cl: Caller[mill.define.Task.Module],
o: Overrides): Command[T] = macro commandImpl[T]
- def source[T](value: Result[T])
- (implicit r: R[T],
+ def source(value: Result[ammonite.ops.Path])
+ (implicit r: R[PathRef],
+ w: W[PathRef],
+ e: sourcecode.Enclosing,
+ n: sourcecode.Name,
+ cl: Caller[mill.define.Task.Module],
+ o: Overrides): Input[PathRef] = macro sourceImpl
+
+ def sourceImpl(c: Context)
+ (value: c.Expr[Result[ammonite.ops.Path]])
+ (r: c.Expr[R[PathRef]],
+ w: c.Expr[W[PathRef]],
+ e: c.Expr[sourcecode.Enclosing],
+ n: c.Expr[sourcecode.Name],
+ cl: c.Expr[Caller[mill.define.Task.Module]],
+ o: c.Expr[Overrides]): c.Expr[Input[PathRef]] = {
+ import c.universe._
+ val wrapped: c.Expr[Result[PathRef]] = reify(value.splice match{
+ case Result.Success(p) => Result.Success(PathRef(p))
+ case x: Result.Failing => x
+ })
+ mill.moduledefs.Cacher.impl0[Input[PathRef]](c)(
+ reify(
+ new Input[PathRef](
+ Applicative.impl0[Task, PathRef, Ctx](c)(wrapped.tree).splice,
+ e.splice.value,
+ cl.splice.value,
+ n.splice.value,
+ upickle.default.ReadWriter(w.splice.write, r.splice.read),
+ o.splice.value
+ )
+ )
+ )
+ }
+
+ def input[T](value: Result[T])
+ (implicit r: R[T],
w: W[T],
e: sourcecode.Enclosing,
n: sourcecode.Name,
cl: Caller[mill.define.Task.Module],
- o: Overrides): Source[T] = macro sourceImpl[T]
+ o: Overrides): Input[T] = macro inputImpl[T]
- def sourceImpl[T: c.WeakTypeTag](c: Context)
+ def inputImpl[T: c.WeakTypeTag](c: Context)
(value: c.Expr[T])
(r: c.Expr[R[T]],
w: c.Expr[W[T]],
e: c.Expr[sourcecode.Enclosing],
n: c.Expr[sourcecode.Name],
cl: c.Expr[Caller[mill.define.Task.Module]],
- o: c.Expr[Overrides]): c.Expr[Source[T]] = {
+ o: c.Expr[Overrides]): c.Expr[Input[T]] = {
import c.universe._
- mill.moduledefs.Cacher.impl0[Source[T]](c)(
+ mill.moduledefs.Cacher.impl0[Input[T]](c)(
reify(
- new Source[T](
+ new Input[T](
Applicative.impl[Task, T, Ctx](c)(value).splice,
e.splice.value,
cl.splice.value,
@@ -294,12 +329,12 @@ class Persistent[+T](t: Task[T],
override def flushDest = false
override def asPersistent = Some(this)
}
-class Source[T](t: Task[T],
- val enclosing: String,
- val owner: Task.Module,
- val name: String,
- val readWrite: RW[_],
- val overrides: Int) extends Target[T]{
+class Input[T](t: Task[T],
+ val enclosing: String,
+ val owner: Task.Module,
+ val name: String,
+ val readWrite: RW[_],
+ val overrides: Int) extends Target[T]{
val inputs = Seq(t)
def evaluate(args: Ctx) = args[T](0)
override def sideHash = util.Random.nextInt()
diff --git a/core/src/main/scala/mill/main/RunScript.scala b/core/src/main/scala/mill/main/RunScript.scala
index dc7b74d6..1fac419b 100644
--- a/core/src/main/scala/mill/main/RunScript.scala
+++ b/core/src/main/scala/mill/main/RunScript.scala
@@ -114,7 +114,7 @@ object RunScript{
val watched = evaluated.results
.iterator
.collect {
- case (t: define.Source[_], Result.Success(p: PathRef)) => p
+ case (t: define.Input[_], Result.Success(p: PathRef)) => p
}
.toSeq
diff --git a/core/src/test/scala/mill/eval/JavaCompileJarTests.scala b/core/src/test/scala/mill/eval/JavaCompileJarTests.scala
index 667aaa22..95ad6669 100644
--- a/core/src/test/scala/mill/eval/JavaCompileJarTests.scala
+++ b/core/src/test/scala/mill/eval/JavaCompileJarTests.scala
@@ -2,7 +2,7 @@ package mill.eval
import ammonite.ops.ImplicitWd._
import ammonite.ops._
-import mill.define.{Source, Target, Task}
+import mill.define.{Input, Target, Task}
import mill.discover.Discovered
import mill.modules.Jvm
import mill.util.Ctx.DestCtx
@@ -36,8 +36,8 @@ object JavaCompileJarTests extends TestSuite{
// |
// v
// resourceRoot ----> jar
- def sourceRoot = T.source{ PathRef(sourceRootPath) }
- def resourceRoot = T.source{ PathRef(resourceRootPath) }
+ def sourceRoot = T.source{ sourceRootPath }
+ def resourceRoot = T.source{ resourceRootPath }
def allSources = T{ ls.rec(sourceRoot().path).map(PathRef(_)) }
def classFiles = T{ compileAll(allSources()) }
def jar = T{ Jvm.createJar(Seq(resourceRoot().path, classFiles().path)) }
@@ -74,7 +74,7 @@ object JavaCompileJarTests extends TestSuite{
.evaluated
.flatMap(_.asTarget)
.filter(mapping.targets.contains)
- .filter(!_.isInstanceOf[Source[_]])
+ .filter(!_.isInstanceOf[Input[_]])
assert(evaluated == expected)
}
diff --git a/core/src/test/scala/mill/util/TestEvaluator.scala b/core/src/test/scala/mill/util/TestEvaluator.scala
index 6ae90167..646ca418 100644
--- a/core/src/test/scala/mill/util/TestEvaluator.scala
+++ b/core/src/test/scala/mill/util/TestEvaluator.scala
@@ -1,7 +1,7 @@
package mill.util
import ammonite.ops.Path
-import mill.define.{Source, Target, Task}
+import mill.define.{Input, Target, Task}
import mill.discover.{Discovered, Mirror}
import mill.eval.{Evaluator, Result}
@@ -18,7 +18,7 @@ class TestEvaluator(mapping: Discovered.Mapping[_],
Tuple2(
evaluated.rawValues.head.asInstanceOf[Result.Success[T]].value,
evaluated.evaluated.collect {
- case t: Target[_] if mapping.targets.contains(t) && !t.isInstanceOf[Source[_]] => t
+ case t: Target[_] if mapping.targets.contains(t) && !t.isInstanceOf[Input[_]] => t
case t: mill.define.Command[_] => t
}.size
))
diff --git a/scalalib/src/main/scala/mill/scalalib/Module.scala b/scalalib/src/main/scala/mill/scalalib/Module.scala
index 76c50aed..1ff4c240 100644
--- a/scalalib/src/main/scala/mill/scalalib/Module.scala
+++ b/scalalib/src/main/scala/mill/scalalib/Module.scala
@@ -191,8 +191,8 @@ trait Module extends mill.Module with TaskModule { outer =>
def prependShellScript: T[String] = T{ "" }
- def sources = T.source{ PathRef(basePath / 'src) }
- def resources = T.source{ PathRef(basePath / 'resources) }
+ def sources = T.source{ basePath / 'src }
+ def resources = T.source{ basePath / 'resources }
def allSources = T{ Seq(sources()) }
def compile: T[CompilationResult] = T.persistent{
compileScala(
@@ -346,11 +346,11 @@ trait PublishModule extends Module { outer =>
trait SbtModule extends Module { outer =>
def basePath: Path
- override def sources = T.source{ PathRef(basePath / 'src / 'main / 'scala) }
- override def resources = T.source{ PathRef(basePath / 'src / 'main / 'resources) }
+ override def sources = T.source{ basePath / 'src / 'main / 'scala }
+ override def resources = T.source{ basePath / 'src / 'main / 'resources }
trait Tests extends super.Tests{
def basePath = outer.basePath
- override def sources = T.source{ PathRef(basePath / 'src / 'test / 'scala) }
- override def resources = T.source{ PathRef(basePath / 'src / 'test / 'resources) }
+ override def sources = T.source{ basePath / 'src / 'test / 'scala }
+ override def resources = T.source{ basePath / 'src / 'test / 'resources }
}
}