summaryrefslogtreecommitdiff
path: root/scalalib
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-01-15 22:48:04 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-01-15 23:14:55 -0800
commitd1c65c7e85467c23a31291b02d2f8fa5889335dc (patch)
tree966874a674de54e4f75c39cbb1a3f98d477d524a /scalalib
parent5e9d809c6eb566e8452bbe2f3a986f31c57e5438 (diff)
downloadmill-d1c65c7e85467c23a31291b02d2f8fa5889335dc.tar.gz
mill-d1c65c7e85467c23a31291b02d2f8fa5889335dc.tar.bz2
mill-d1c65c7e85467c23a31291b02d2f8fa5889335dc.zip
- Swap over to new `ivy"foo:bar:baz"` syntax for defining ivy dependencies
- `projectDeps` is now `moduleDeps` for compatibility with our `Module` terminology - `scalalib.Module` is now `ScalaModule` for compatibility with `import scalalib._`
Diffstat (limited to 'scalalib')
-rw-r--r--scalalib/src/main/scala/mill/scalalib/Dep.scala9
-rw-r--r--scalalib/src/main/scala/mill/scalalib/GenIdea.scala4
-rw-r--r--scalalib/src/main/scala/mill/scalalib/MiscModule.scala2
-rw-r--r--scalalib/src/main/scala/mill/scalalib/PublishModule.scala2
-rw-r--r--scalalib/src/main/scala/mill/scalalib/ScalaModule.scala (renamed from scalalib/src/main/scala/mill/scalalib/Module.scala)18
-rw-r--r--scalalib/src/main/scala/mill/scalalib/package.scala9
-rw-r--r--scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala2
-rw-r--r--scalalib/src/test/scala/mill/scalalib/ResolveDepsTests.scala8
8 files changed, 35 insertions, 19 deletions
diff --git a/scalalib/src/main/scala/mill/scalalib/Dep.scala b/scalalib/src/main/scala/mill/scalalib/Dep.scala
index 3d4c43ac..aa301fcb 100644
--- a/scalalib/src/main/scala/mill/scalalib/Dep.scala
+++ b/scalalib/src/main/scala/mill/scalalib/Dep.scala
@@ -3,6 +3,15 @@ import mill.util.JsonFormatters._
import upickle.default.{macroRW, ReadWriter => RW}
sealed trait Dep
object Dep{
+
+ implicit def parse(signature: String) = {
+ signature.split(':') match{
+ case Array(a, b, c) => Dep.Java(a, b, c)
+ case Array(a, "", b, c) => Dep.Scala(a, b, c)
+ case Array(a, "", "", b, c) => Dep.Point(a, b, c)
+ case _ => throw new Exception(s"Unable to parse signature: [$signature]")
+ }
+ }
def apply(org: String, name: String, version: String): Dep = {
this(coursier.Dependency(coursier.Module(org, name), version))
}
diff --git a/scalalib/src/main/scala/mill/scalalib/GenIdea.scala b/scalalib/src/main/scala/mill/scalalib/GenIdea.scala
index b11c58f3..e9d8fac5 100644
--- a/scalalib/src/main/scala/mill/scalalib/GenIdea.scala
+++ b/scalalib/src/main/scala/mill/scalalib/GenIdea.scala
@@ -27,7 +27,7 @@ object GenIdea {
def xmlFileLayout[T](evaluator: Evaluator[T], rootModule: mill.Module): Seq[(RelPath, scala.xml.Node)] = {
- val modules = rootModule.millInternal.segmentsToModules.values.collect{case x: scalalib.Module => (x.millModuleSegments, x)}.toSeq
+ val modules = rootModule.millInternal.segmentsToModules.values.collect{case x: scalalib.ScalaModule => (x.millModuleSegments, x)}.toSeq
val resolved = for((path, mod) <- modules) yield {
val Seq(resolvedCp: Loose.Agg[PathRef], resolvedSrcs: Loose.Agg[PathRef]) =
@@ -87,7 +87,7 @@ object GenIdea {
Strict.Agg.from(generatedSourcePaths),
Strict.Agg(paths.out),
Strict.Agg.from(resolvedDeps.map(pathToLibName)),
- Strict.Agg.from(mod.projectDeps.map{m => moduleName(moduleLabels(m))}.distinct)
+ Strict.Agg.from(mod.moduleDeps.map{ m => moduleName(moduleLabels(m))}.distinct)
)
Tuple2(".idea_modules"/s"${moduleName(path)}.iml", elem)
}
diff --git a/scalalib/src/main/scala/mill/scalalib/MiscModule.scala b/scalalib/src/main/scala/mill/scalalib/MiscModule.scala
index 5e28c34b..52a95337 100644
--- a/scalalib/src/main/scala/mill/scalalib/MiscModule.scala
+++ b/scalalib/src/main/scala/mill/scalalib/MiscModule.scala
@@ -7,7 +7,7 @@ import mill.eval.{PathRef, Result}
import mill.util.Loose.Agg
-trait SbtModule extends Module { outer =>
+trait SbtModule extends ScalaModule { outer =>
override def sources = T.input{ Agg(PathRef(basePath / 'src / 'main / 'scala)) }
override def resources = T.input{ Agg(PathRef(basePath / 'src / 'main / 'resources)) }
trait Tests extends super.Tests {
diff --git a/scalalib/src/main/scala/mill/scalalib/PublishModule.scala b/scalalib/src/main/scala/mill/scalalib/PublishModule.scala
index 4fd8e94f..64efce77 100644
--- a/scalalib/src/main/scala/mill/scalalib/PublishModule.scala
+++ b/scalalib/src/main/scala/mill/scalalib/PublishModule.scala
@@ -7,7 +7,7 @@ import mill.util.Loose.Agg
/**
* Configuration necessary for publishing a Scala module to Maven Central or similar
*/
-trait PublishModule extends Module { outer =>
+trait PublishModule extends ScalaModule { outer =>
import mill.scalalib.publish._
def pomSettings: T[PomSettings]
diff --git a/scalalib/src/main/scala/mill/scalalib/Module.scala b/scalalib/src/main/scala/mill/scalalib/ScalaModule.scala
index 48eb4b14..5bae1749 100644
--- a/scalalib/src/main/scala/mill/scalalib/Module.scala
+++ b/scalalib/src/main/scala/mill/scalalib/ScalaModule.scala
@@ -16,11 +16,11 @@ import sbt.testing.Status
/**
* Core configuration required to compile a single Scala compilation target
*/
-trait Module extends mill.Module with TaskModule { outer =>
+trait ScalaModule extends mill.Module with TaskModule { outer =>
def defaultCommandName() = "run"
trait Tests extends TestModule{
def scalaVersion = outer.scalaVersion()
- override def projectDeps = Seq(outer)
+ override def moduleDeps = Seq(outer)
}
def scalaVersion: T[String]
def mainClass: T[Option[String]] = None
@@ -39,23 +39,23 @@ trait Module extends mill.Module with TaskModule { outer =>
MavenRepository("https://repo1.maven.org/maven2")
)
- def projectDeps = Seq.empty[Module]
+ def moduleDeps = Seq.empty[ScalaModule]
def depClasspath = T{ Agg.empty[PathRef] }
def upstreamRunClasspath = T{
- Task.traverse(projectDeps)(p =>
+ Task.traverse(moduleDeps)(p =>
T.task(p.runDepClasspath() ++ p.runClasspath())
)
}
def upstreamCompileOutput = T{
- Task.traverse(projectDeps)(_.compile)
+ Task.traverse(moduleDeps)(_.compile)
}
def upstreamCompileClasspath = T{
externalCompileDepClasspath() ++
upstreamCompileOutput().map(_.classes) ++
- Task.traverse(projectDeps)(_.compileDepClasspath)().flatten
+ Task.traverse(moduleDeps)(_.compileDepClasspath)().flatten
}
def resolveDeps(deps: Task[Agg[Dep]], sources: Boolean = false) = T.task{
@@ -69,14 +69,14 @@ trait Module extends mill.Module with TaskModule { outer =>
}
def externalCompileDepClasspath: T[Agg[PathRef]] = T{
- Agg.from(Task.traverse(projectDeps)(_.externalCompileDepClasspath)().flatten) ++
+ Agg.from(Task.traverse(moduleDeps)(_.externalCompileDepClasspath)().flatten) ++
resolveDeps(
T.task{ivyDeps() ++ compileIvyDeps() ++ scalaCompilerIvyDeps(scalaVersion())}
)()
}
def externalCompileDepSources: T[Agg[PathRef]] = T{
- Agg.from(Task.traverse(projectDeps)(_.externalCompileDepSources)().flatten) ++
+ Agg.from(Task.traverse(moduleDeps)(_.externalCompileDepSources)().flatten) ++
resolveDeps(
T.task{ivyDeps() ++ compileIvyDeps() ++ scalaCompilerIvyDeps(scalaVersion())},
sources = true
@@ -268,7 +268,7 @@ object TestModule{
}
}
}
-trait TestModule extends Module with TaskModule {
+trait TestModule extends ScalaModule with TaskModule {
override def defaultCommandName() = "test"
def testFramework: T[String]
diff --git a/scalalib/src/main/scala/mill/scalalib/package.scala b/scalalib/src/main/scala/mill/scalalib/package.scala
index 1bad9226..5a282e82 100644
--- a/scalalib/src/main/scala/mill/scalalib/package.scala
+++ b/scalalib/src/main/scala/mill/scalalib/package.scala
@@ -1,5 +1,12 @@
package mill
package object scalalib {
-
+ implicit class DepSyntax(ctx: StringContext){
+ def ivy(args: Any*) = Dep.parse{
+ (
+ ctx.parts.take(args.length).zip(args).flatMap{case (p, a) => Seq(p, a)} ++
+ ctx.parts.drop(args.length)
+ ).mkString
+ }
+ }
}
diff --git a/scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala b/scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala
index 657ddc9e..70c78cee 100644
--- a/scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala
+++ b/scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala
@@ -16,7 +16,7 @@ import scala.collection.JavaConverters._
object HelloWorldTests extends TestSuite {
- trait HelloWorldModule extends scalalib.Module {
+ trait HelloWorldModule extends scalalib.ScalaModule {
def scalaVersion = "2.12.4"
def basePath = HelloWorldTests.workingSrcPath
}
diff --git a/scalalib/src/test/scala/mill/scalalib/ResolveDepsTests.scala b/scalalib/src/test/scala/mill/scalalib/ResolveDepsTests.scala
index f28df152..d1ddde20 100644
--- a/scalalib/src/test/scala/mill/scalalib/ResolveDepsTests.scala
+++ b/scalalib/src/test/scala/mill/scalalib/ResolveDepsTests.scala
@@ -14,25 +14,25 @@ object ResolveDepsTests extends TestSuite {
val tests = Tests {
'resolveValidDeps - {
- val deps = Agg(Dep("com.lihaoyi", "pprint", "0.5.3"))
+ val deps = Agg(ivy"com.lihaoyi::pprint:0.5.3")
val Success(paths) = evalDeps(deps)
assert(paths.nonEmpty)
}
'errOnInvalidOrgDeps - {
- val deps = Agg(Dep("xxx.yyy.invalid", "pprint", "0.5.3"))
+ val deps = Agg(ivy"xxx.yyy.invalid::pprint:0.5.3")
val Failure(errMsg) = evalDeps(deps)
assert(errMsg.contains("xxx.yyy.invalid"))
}
'errOnInvalidVersionDeps - {
- val deps = Agg(Dep("com.lihaoyi", "pprint", "invalid.version.num"))
+ val deps = Agg(ivy"com.lihaoyi::pprint:invalid.version.num")
val Failure(errMsg) = evalDeps(deps)
assert(errMsg.contains("invalid.version.num"))
}
'errOnPartialSuccess - {
- val deps = Agg(Dep("com.lihaoyi", "pprint", "0.5.3"), Dep("fake", "fake", "fake"))
+ val deps = Agg(ivy"com.lihaoyi::pprint:0.5.3", ivy"fake::fake:fake")
val Failure(errMsg) = evalDeps(deps)
assert(errMsg.contains("fake"))
}