diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2017-10-19 04:39:08 -0700 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2017-10-19 04:39:08 -0700 |
commit | 71ddc7e65666844e063c48c80b3ce7fecfe77a0f (patch) | |
tree | 9e03046e8c96d6d1b99e7a68ad8c3b12d8f2a434 /src/main/scala/hbt/Target.scala | |
parent | 738104aafa8ac0f0dd09e9ef015d909b3f016158 (diff) | |
download | mill-71ddc7e65666844e063c48c80b3ce7fecfe77a0f.tar.gz mill-71ddc7e65666844e063c48c80b3ce7fecfe77a0f.tar.bz2 mill-71ddc7e65666844e063c48c80b3ce7fecfe77a0f.zip |
- Convert example workflow to `javac` since `scalac` is slow
- Implement `Target.Subprocess`, and use it inside `compileAll`
- Move `Main` workflow into `HbtTests`, to be run using uTest
Diffstat (limited to 'src/main/scala/hbt/Target.scala')
-rw-r--r-- | src/main/scala/hbt/Target.scala | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/main/scala/hbt/Target.scala b/src/main/scala/hbt/Target.scala index 99f6e27d..fa2fbbe5 100644 --- a/src/main/scala/hbt/Target.scala +++ b/src/main/scala/hbt/Target.scala @@ -1,5 +1,6 @@ package hbt +import java.io.InputStreamReader import java.nio.{file => jnio} import sourcecode.Enclosing @@ -50,12 +51,20 @@ object Target{ def evaluate(args: Args) = path val inputs = Nil } -// case class Command(inputs: Seq[Target[jnio.Path]], -// output: Seq[Target[jnio.Path]], -// label: String) extends Target[Command.Result] -// object Command{ -// case class Result(stdout: String, -// stderr: String, -// writtenFiles: Seq[jnio.Path]) -// } + case class Subprocess(inputs: Seq[Target[_]], + command: Args => Seq[String], + label: String) extends Target[Subprocess.Result] { + + def evaluate(args: Args) = { + jnio.Files.createDirectories(args.dest) + import ammonite.ops._ + implicit val path = ammonite.ops.Path(args.dest, pwd) + val output = %%(command(args)) + assert(output.exitCode == 0) + Subprocess.Result(output, args.dest) + } + } + object Subprocess{ + case class Result(result: ammonite.ops.CommandResult, dest: jnio.Path) + } } |