summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-02-02 22:10:16 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-02-02 23:04:04 -0800
commitde2016a970b1e4bcd2f618815edc616282f7f20e (patch)
tree02b1207d7f6e5ddedaf6c4047ea94c8621af2b30
parent80c8ad730132145fc33b790657b14669f282d5b0 (diff)
downloadmill-de2016a970b1e4bcd2f618815edc616282f7f20e.tar.gz
mill-de2016a970b1e4bcd2f618815edc616282f7f20e.tar.bz2
mill-de2016a970b1e4bcd2f618815edc616282f7f20e.zip
use an implicit to indicate whether a ctx is within an external module
-rw-r--r--build.sbt31
-rwxr-xr-xbuild.sc4
-rw-r--r--core/src/mill/define/Ctx.scala10
-rw-r--r--core/src/mill/define/Module.scala16
-rw-r--r--core/src/mill/eval/Evaluator.scala10
-rw-r--r--core/test/src/mill/eval/ModuleTests.scala3
-rw-r--r--core/test/src/mill/util/TestEvaluator.scala4
7 files changed, 29 insertions, 49 deletions
diff --git a/build.sbt b/build.sbt
index c1e72ae9..7d46e889 100644
--- a/build.sbt
+++ b/build.sbt
@@ -64,37 +64,6 @@ def ammoniteRun(hole: SettingKey[File], args: String => List[String], suffix: St
}
-//def bridge(bridgeVersion: String) = Project(
-// id = "bridge" + bridgeVersion.replace('.', '_'),
-// base = file("target/bridge/" + bridgeVersion.replace('.', '_')),
-// settings = Seq(
-// organization := "com.lihaoyi",
-// scalaVersion := bridgeVersion,
-// name := "mill-bridge",
-// target := baseDirectory.value,
-// crossVersion := CrossVersion.full,
-// libraryDependencies ++= Seq(
-// "org.scala-lang" % "scala-compiler" % scalaVersion.value,
-// "org.scala-sbt" % "compiler-interface" % "1.0.5"
-// ),
-// (sourceGenerators in Compile) += ammoniteRun(
-// sourceManaged in Compile,
-// List("shared.sc", "downloadBridgeSource", _, bridgeVersion)
-// ).taskValue.map(x => (x ** "*.scala").get)
-// )
-//)
-//
-//lazy val bridge2_10_6 = bridge("2.10.6")
-//lazy val bridge2_11_8 = bridge("2.11.8")
-////lazy val bridge2_11_9 = bridge("2.11.9")
-////lazy val bridge2_11_10 = bridge("2.11.10")
-//lazy val bridge2_11_11 = bridge("2.11.11")
-////lazy val bridge2_12_0 = bridge("2.12.0")
-////lazy val bridge2_12_1 = bridge("2.12.1")
-////lazy val bridge2_12_2 = bridge("2.12.2")
-//lazy val bridge2_12_3 = bridge("2.12.3")
-//lazy val bridge2_12_4 = bridge("2.12.4")
-
lazy val core = project
.dependsOn(moduledefs)
.settings(
diff --git a/build.sc b/build.sc
index cbee9512..546f4e99 100755
--- a/build.sc
+++ b/build.sc
@@ -181,10 +181,6 @@ val assemblyProjects = Seq(scalalib, scalajslib)
def assemblyClasspath = mill.define.Task.traverse(assemblyProjects)(_.runClasspath)
-def publishBridges(credentials: String, gpgPassphrase: String) = T.command {
- mill.define.Task.traverse(bridges.items)(_._2.publish(credentials, gpgPassphrase))
-}
-
def assemblyBase(classpath: Agg[Path], extraArgs: String)
(implicit ctx: mill.util.Ctx.DestCtx) = {
createAssembly(
diff --git a/core/src/mill/define/Ctx.scala b/core/src/mill/define/Ctx.scala
index ddbdca96..405f45ed 100644
--- a/core/src/mill/define/Ctx.scala
+++ b/core/src/mill/define/Ctx.scala
@@ -47,23 +47,27 @@ case class Ctx(enclosing: String,
segment: Segment,
millSourcePath: Path,
segments: Segments,
- overrides: Int){
+ overrides: Int,
+ external: Boolean){
}
object Ctx{
+ case class External(value: Boolean)
implicit def make(implicit millModuleEnclosing0: sourcecode.Enclosing,
millModuleLine0: sourcecode.Line,
millName0: sourcecode.Name,
millModuleBasePath0: BasePath,
segments0: Segments,
- overrides0: Overrides): Ctx = {
+ overrides0: Overrides,
+ external0: External): Ctx = {
Ctx(
millModuleEnclosing0.value,
millModuleLine0.value,
Segment.Label(millName0.value),
millModuleBasePath0.value,
segments0,
- overrides0.value
+ overrides0.value,
+ external0.value
)
}
} \ No newline at end of file
diff --git a/core/src/mill/define/Module.scala b/core/src/mill/define/Module.scala
index 039011d8..e765a6b4 100644
--- a/core/src/mill/define/Module.scala
+++ b/core/src/mill/define/Module.scala
@@ -25,6 +25,7 @@ class Module(implicit outerCtx0: mill.define.Ctx) extends mill.moduledefs.Cacher
lazy val millModuleDirectChildren = millInternal.reflectNestedObjects[Module]
def millOuterCtx = outerCtx0
def millSourcePath: Path = millOuterCtx.millSourcePath / millOuterCtx.segment.pathSegments
+ implicit def millModuleExternal: Ctx.External = Ctx.External(millOuterCtx.external)
implicit def millModuleBasePath: BasePath = BasePath(millSourcePath)
implicit def millModuleSegments: Segments = {
millOuterCtx.segments ++ Seq(millOuterCtx.segment)
@@ -92,12 +93,20 @@ trait TaskModule extends Module {
object BaseModule{
case class Implicit(value: BaseModule)
}
-class BaseModule(millSourcePath0: Path)
+class BaseModule(millSourcePath0: Path, external0: Boolean = false)
(implicit millModuleEnclosing0: sourcecode.Enclosing,
millModuleLine0: sourcecode.Line,
millName0: sourcecode.Name)
extends Module()(
- mill.define.Ctx.make(implicitly, implicitly, implicitly, BasePath(millSourcePath0), Segments(), Overrides(0))
+ mill.define.Ctx.make(
+ implicitly,
+ implicitly,
+ implicitly,
+ BasePath(millSourcePath0),
+ Segments(),
+ Overrides(0),
+ Ctx.External(external0)
+ )
){
// A BaseModule should provide an empty Segments list to it's children, since
// it is the root of the module tree, and thus must not include it's own
@@ -110,7 +119,8 @@ class BaseModule(millSourcePath0: Path)
class ExternalModule(implicit millModuleEnclosing0: sourcecode.Enclosing,
millModuleLine0: sourcecode.Line,
- millName0: sourcecode.Name) extends BaseModule(ammonite.ops.pwd){
+ millName0: sourcecode.Name)
+ extends BaseModule(ammonite.ops.pwd, external0 = true){
assert(
!" #".exists(millModuleEnclosing0.value.contains(_)),
"External modules must be at a top-level static path, not " + millModuleEnclosing0.value
diff --git a/core/src/mill/eval/Evaluator.scala b/core/src/mill/eval/Evaluator.scala
index 21e3d3a9..d8d690ac 100644
--- a/core/src/mill/eval/Evaluator.scala
+++ b/core/src/mill/eval/Evaluator.scala
@@ -126,11 +126,11 @@ class Evaluator[T](val outPath: Path,
)
case Right(labelledNamedTask) =>
- val paths = if (labelledNamedTask.task.asTarget.exists(rootModule.millInternal.targets.contains)){
- Evaluator.resolveDestPaths(outPath, labelledNamedTask.segments)
- }else{
- Evaluator.resolveDestPaths(externalOutPath, labelledNamedTask.segments)
- }
+ val paths = Evaluator.resolveDestPaths(
+ if (!labelledNamedTask.task.ctx.external) outPath else externalOutPath,
+ labelledNamedTask.segments
+ )
+
val groupBasePath = millSourcePath / Evaluator.makeSegmentStrings(labelledNamedTask.segments)
mkdir(paths.out)
val cached = for{
diff --git a/core/test/src/mill/eval/ModuleTests.scala b/core/test/src/mill/eval/ModuleTests.scala
index 56c1a47b..db70fee3 100644
--- a/core/test/src/mill/eval/ModuleTests.scala
+++ b/core/test/src/mill/eval/ModuleTests.scala
@@ -18,10 +18,11 @@ object ModuleTests extends TestSuite{
def z = T{ ExternalModule.x() + ExternalModule.inner.y() }
}
val tests = Tests {
+ rm(TestEvaluator.externalOutPath)
'externalModuleTargetsAreNamespacedByModulePackagePath - {
val check = new TestEvaluator(
Build,
- pwd / 'target / 'workspace / "module-tests" / "externalModule",
+ pwd / 'target / 'external,
pwd
)
diff --git a/core/test/src/mill/util/TestEvaluator.scala b/core/test/src/mill/util/TestEvaluator.scala
index 26577f3e..416ed71c 100644
--- a/core/test/src/mill/util/TestEvaluator.scala
+++ b/core/test/src/mill/util/TestEvaluator.scala
@@ -16,8 +16,8 @@ class TestEvaluator[T <: TestUtil.TestBuild](module: T,
workspacePath: Path,
millSourcePath: Path)
(implicit discover: Discover[T]){
- val logger = DummyLogger
-// val logger = new PrintLogger(true, ammonite.util.Colors.Default, System.out, System.out, System.err)
+// val logger = DummyLogger
+ val logger = new PrintLogger(true, ammonite.util.Colors.Default, System.out, System.out, System.err)
val evaluator = new Evaluator(workspacePath, millSourcePath, TestEvaluator.externalOutPath, module, discover, logger)
def apply[T](t: Task[T]): Either[Result.Failing, (T, Int)] = {