diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-01-15 22:48:04 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-01-15 23:14:55 -0800 |
commit | d1c65c7e85467c23a31291b02d2f8fa5889335dc (patch) | |
tree | 966874a674de54e4f75c39cbb1a3f98d477d524a /scalalib | |
parent | 5e9d809c6eb566e8452bbe2f3a986f31c57e5438 (diff) | |
download | mill-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.scala | 9 | ||||
-rw-r--r-- | scalalib/src/main/scala/mill/scalalib/GenIdea.scala | 4 | ||||
-rw-r--r-- | scalalib/src/main/scala/mill/scalalib/MiscModule.scala | 2 | ||||
-rw-r--r-- | scalalib/src/main/scala/mill/scalalib/PublishModule.scala | 2 | ||||
-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.scala | 9 | ||||
-rw-r--r-- | scalalib/src/test/scala/mill/scalalib/HelloWorldTests.scala | 2 | ||||
-rw-r--r-- | scalalib/src/test/scala/mill/scalalib/ResolveDepsTests.scala | 8 |
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")) } |