summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-01-17 21:35:48 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-01-17 21:35:48 -0800
commit26e3702f3fccdedbb9dd44574678e9217d16959c (patch)
treef00f3aee83c5259313cf0847f9dcd246d67dd20e
parenta7f182ee709d77070ca53c28833821ad638a6743 (diff)
downloadmill-26e3702f3fccdedbb9dd44574678e9217d16959c.tar.gz
mill-26e3702f3fccdedbb9dd44574678e9217d16959c.tar.bz2
mill-26e3702f3fccdedbb9dd44574678e9217d16959c.zip
Implement downloading/caching of binaries and java-source-folder support to make better-files benchmarks compile; fixes https://github.com/lihaoyi/mill/issues/37
-rw-r--r--core/src/main/scala/mill/modules/Util.scala26
-rw-r--r--integration/src/test/resources/better-files/build.sc7
-rw-r--r--integration/src/test/scala/mill/integration/BetterFilesTests.scala1
-rw-r--r--scalalib/src/main/scala/mill/scalalib/Lib.scala7
-rw-r--r--scalalib/src/main/scala/mill/scalalib/MiscModule.scala14
5 files changed, 51 insertions, 4 deletions
diff --git a/core/src/main/scala/mill/modules/Util.scala b/core/src/main/scala/mill/modules/Util.scala
new file mode 100644
index 00000000..cd674bad
--- /dev/null
+++ b/core/src/main/scala/mill/modules/Util.scala
@@ -0,0 +1,26 @@
+package mill.modules
+
+import ammonite.ops.RelPath
+import mill.eval.PathRef
+import mill.util.Ctx
+
+object Util {
+ def download(url: String, dest: RelPath)(implicit ctx: Ctx.DestCtx) = {
+ ammonite.ops.mkdir(ctx.dest)
+ val out = ctx.dest / dest
+
+ val website = new java.net.URI(url).toURL
+ val rbc = java.nio.channels.Channels.newChannel(website.openStream)
+ try{
+ val fos = new java.io.FileOutputStream(out.toIO)
+ try{
+ fos.getChannel.transferFrom(rbc, 0, java.lang.Long.MAX_VALUE)
+ PathRef(out)
+ } finally{
+ fos.close()
+ }
+ } finally{
+ rbc.close()
+ }
+ }
+}
diff --git a/integration/src/test/resources/better-files/build.sc b/integration/src/test/resources/better-files/build.sc
index e541e3f1..582d3400 100644
--- a/integration/src/test/resources/better-files/build.sc
+++ b/integration/src/test/resources/better-files/build.sc
@@ -75,7 +75,12 @@ object benchmarks extends BetterFilesModule{
def moduleDeps = Seq(core)
def ivyDeps = Agg(
ivy"commons-io:commons-io:2.5"
- // "fastjavaio" % "fastjavaio" % "1.0" from "https://github.com/williamfiset/FastJavaIO/releases/download/v1.0/fastjavaio.jar"
+ )
+ def depClasspath = Agg(
+ mill.modules.Util.download(
+ "https://github.com/williamfiset/FastJavaIO/releases/download/v1.0/fastjavaio.jar",
+ "fastjavaio.jar"
+ )
)
}
diff --git a/integration/src/test/scala/mill/integration/BetterFilesTests.scala b/integration/src/test/scala/mill/integration/BetterFilesTests.scala
index a6207d87..7ee943df 100644
--- a/integration/src/test/scala/mill/integration/BetterFilesTests.scala
+++ b/integration/src/test/scala/mill/integration/BetterFilesTests.scala
@@ -10,6 +10,7 @@ object BetterFilesTests extends IntegrationTestSuite("MILL_BETTERFILES_REPO", "b
assert(eval("core.test"))
assert(eval("akka.test"))
+ assert(eval("benchmarks.test.compile"))
val coreTestMeta = meta("core.test.test")
assert(coreTestMeta.contains("better.files.FileSpec"))
diff --git a/scalalib/src/main/scala/mill/scalalib/Lib.scala b/scalalib/src/main/scala/mill/scalalib/Lib.scala
index 8a98d724..a038a59b 100644
--- a/scalalib/src/main/scala/mill/scalalib/Lib.scala
+++ b/scalalib/src/main/scala/mill/scalalib/Lib.scala
@@ -128,7 +128,12 @@ object Lib{
val newResult = ic.compile(
ic.inputs(
classpath = classesIODir +: compileClasspathFiles,
- sources = sources.filter(_.toIO.exists()).flatMap(ls.rec).filter(x => x.isFile && x.ext == "scala").map(_.toIO).toArray,
+ sources = for{
+ root <- sources.toArray
+ if exists(root)
+ path <- ls.rec(root)
+ if path.isFile && (path.ext == "scala" || path.ext == "java")
+ } yield path.toIO,
classesDirectory = classesIODir,
scalacOptions = (scalacPluginClasspath.map(jar => s"-Xplugin:${jar}") ++ scalacOptions).toArray,
javacOptions = javacOptions.toArray,
diff --git a/scalalib/src/main/scala/mill/scalalib/MiscModule.scala b/scalalib/src/main/scala/mill/scalalib/MiscModule.scala
index 52a95337..502ba461 100644
--- a/scalalib/src/main/scala/mill/scalalib/MiscModule.scala
+++ b/scalalib/src/main/scala/mill/scalalib/MiscModule.scala
@@ -8,11 +8,21 @@ import mill.util.Loose.Agg
trait SbtModule extends ScalaModule { outer =>
- override def sources = T.input{ Agg(PathRef(basePath / 'src / 'main / 'scala)) }
+ override def sources = T.input{
+ Agg(
+ PathRef(basePath / 'src / 'main / 'scala),
+ PathRef(basePath / 'src / 'main / 'java)
+ )
+ }
override def resources = T.input{ Agg(PathRef(basePath / 'src / 'main / 'resources)) }
trait Tests extends super.Tests {
override def basePath = outer.basePath
- override def sources = T.input{ Agg(PathRef(basePath / 'src / 'test / 'scala)) }
+ override def sources = T.input{
+ Agg(
+ PathRef(basePath / 'src / 'test / 'scala),
+ PathRef(basePath / 'src / 'test / 'java)
+ )
+ }
override def resources = T.input{ Agg(PathRef(basePath / 'src / 'test / 'resources)) }
}
}