diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-05 17:34:36 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2017-11-05 17:34:36 -0800 |
commit | 7a6c80301fa5f405f1d9ffca2776b19cf9a29b9a (patch) | |
tree | 2f3f4375097756bded9dfbe8bd546b448b2cd394 /core/src/test/scala/forge/JavaCompileJarTests.scala | |
parent | 011e8ef1059196a373a0eee32c58dfdaee3493f2 (diff) | |
download | mill-7a6c80301fa5f405f1d9ffca2776b19cf9a29b9a.tar.gz mill-7a6c80301fa5f405f1d9ffca2776b19cf9a29b9a.tar.bz2 mill-7a6c80301fa5f405f1d9ffca2776b19cf9a29b9a.zip |
Break out reusable JVM specific stuff into its own file
Diffstat (limited to 'core/src/test/scala/forge/JavaCompileJarTests.scala')
-rw-r--r-- | core/src/test/scala/forge/JavaCompileJarTests.scala | 55 |
1 files changed, 2 insertions, 53 deletions
diff --git a/core/src/test/scala/forge/JavaCompileJarTests.scala b/core/src/test/scala/forge/JavaCompileJarTests.scala index 33383a95..6ce02149 100644 --- a/core/src/test/scala/forge/JavaCompileJarTests.scala +++ b/core/src/test/scala/forge/JavaCompileJarTests.scala @@ -1,13 +1,12 @@ package forge -import java.io.FileOutputStream -import java.util.jar.{JarEntry, JarOutputStream} import ammonite.ops._ import forge.define.Target import forge.discover.Discovered import forge.eval.{Evaluator, PathRef} -import forge.util.{Args, OSet} +import forge.modules.Jvm.jarUp +import forge.util.OSet import utest._ object JavaCompileJarTests extends TestSuite{ @@ -22,56 +21,6 @@ object JavaCompileJarTests extends TestSuite{ } - private def createManifest(mainClass: Option[String]) = { - val m = new java.util.jar.Manifest() - m.getMainAttributes.put(java.util.jar.Attributes.Name.MANIFEST_VERSION, "1.0") - m.getMainAttributes.putValue( "Created-By", "Scala Forge" ) - mainClass.foreach( - m.getMainAttributes.put(java.util.jar.Attributes.Name.MAIN_CLASS, _) - ) - m - } - - def createJar(outputPath: Path, inputPaths: Seq[Path], mainClass: Option[String] = None ): Option[Path] = { - rm(outputPath) - if(inputPaths.isEmpty) None - else { - mkdir(outputPath/up) - - val jar = new JarOutputStream( - new FileOutputStream(outputPath.toIO), - createManifest(mainClass) - ) - - try{ - assert(inputPaths.forall(exists(_))) - for{ - p <- inputPaths - (file, mapping) <- - if (p.isFile) Iterator(p -> empty/p.last) - else ls.rec(p).filter(_.isFile).map(sub => sub -> sub.relativeTo(p)) - } { - val entry = new JarEntry(mapping.toString) - entry.setTime(file.mtime.toMillis) - jar.putNextEntry(entry) - jar.write(read.bytes(file)) - jar.closeEntry - } - } finally { - jar.close - } - - Some(outputPath) - } - } - case class jarUp(roots: Target[PathRef]*) extends Target[PathRef]{ - - val inputs = roots - def evaluate(args: Args): PathRef = { - createJar(args.dest, args.args.map(_.asInstanceOf[PathRef].path)) - PathRef(args.dest) - } - } val tests = Tests{ 'javac { |