aboutsummaryrefslogtreecommitdiff
path: root/stage2/BasicBuild.scala
diff options
context:
space:
mode:
authorJan Christopher Vogt <oss.nsp@cvogt.org>2017-03-12 12:51:59 -0400
committerGitHub <noreply@github.com>2017-03-12 12:51:59 -0400
commit918d158f0ce87c664555d0d624fb3664c7015851 (patch)
tree2a233f6fc1cdf7dd6a9af6a3533f794ad28ff692 /stage2/BasicBuild.scala
parentdc5ce5caa0ff7ea079d63a0c1990256b854c4370 (diff)
parent244f86a9cdf19904169456c234a2752f125dd427 (diff)
downloadcbt-918d158f0ce87c664555d0d624fb3664c7015851.tar.gz
cbt-918d158f0ce87c664555d0d624fb3664c7015851.tar.bz2
cbt-918d158f0ce87c664555d0d624fb3664c7015851.zip
Merge pull request #420 from cvogt/watch-improvements
revamp loop feature
Diffstat (limited to 'stage2/BasicBuild.scala')
-rw-r--r--stage2/BasicBuild.scala20
1 files changed, 19 insertions, 1 deletions
diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala
index 68bda15..bc6f9d9 100644
--- a/stage2/BasicBuild.scala
+++ b/stage2/BasicBuild.scala
@@ -2,6 +2,7 @@ package cbt
import java.io._
import java.net._
+import java.nio.file._
class BasicBuild(final val context: Context) extends BaseBuild
trait BaseBuild extends BuildInterface with DependencyImplementation with TriggerLoop with SbtDependencyDsl{
@@ -124,7 +125,11 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with Trigge
pathToNestedBuild: _*
)
- def triggerLoopFiles: Seq[File] = sources ++ transitiveDependencies.collect{ case b: TriggerLoop => b.triggerLoopFiles }.flatten
+ def triggerLoopFiles: Set[File] = (
+ context.triggerLoopFiles
+ ++ sources
+ ++ transitiveDependencies.collect{ case b: TriggerLoop => b.triggerLoopFiles }.flatten
+ )
def localJars: Seq[File] =
Seq(projectDirectory ++ "/lib")
@@ -318,4 +323,17 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with Trigge
final def crossScalaVersionsArray = Array(scalaVersion)
def publish: Seq[URL] = Seq()
+
+ def loop = {
+ lib.callReflective(this, context.args.headOption, context.copy(args=context.args.drop(1)))
+ val files = triggerLoopFiles
+ lib.watch{ () =>
+ logger.loop("Looping change detection over:\n - "++files.mkString("\n - "))
+ files
+ }()
+ context.loopFile.getParentFile.mkdirs
+ lib.write( context.loopFile, files.mkString("\n"), StandardOpenOption.CREATE )
+
+ ExitCode(253) // signal bash script to restart
+ }
}