summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2017-04-09 16:48:21 -0700
committerJakob Odersky <jakob@odersky.com>2017-04-09 16:48:21 -0700
commit82cfb0ef1ab41ecc09ed0ccaf56704e14b654177 (patch)
treeae24ad2c7c42f9303c9c1800ec66fe68715f9921
parent7f2467a3464c83e5458bc8d25159b8e091af52e9 (diff)
downloadcrashbox-ci-82cfb0ef1ab41ecc09ed0ccaf56704e14b654177.tar.gz
crashbox-ci-82cfb0ef1ab41ecc09ed0ccaf56704e14b654177.tar.bz2
crashbox-ci-82cfb0ef1ab41ecc09ed0ccaf56704e14b654177.zip
Make builder generic
-rw-r--r--crashboxd/src/main/scala/io/crashbox/ci/Builder.scala10
-rw-r--r--crashboxd/src/main/scala/io/crashbox/ci/Parser.scala4
-rw-r--r--crashboxd/src/main/scala/io/crashbox/ci/defs.scala4
3 files changed, 9 insertions, 9 deletions
diff --git a/crashboxd/src/main/scala/io/crashbox/ci/Builder.scala b/crashboxd/src/main/scala/io/crashbox/ci/Builder.scala
index 18bf219..a6269e8 100644
--- a/crashboxd/src/main/scala/io/crashbox/ci/Builder.scala
+++ b/crashboxd/src/main/scala/io/crashbox/ci/Builder.scala
@@ -19,10 +19,10 @@ case class TaskId(buildId: String, taskIdx: Int) {
override def toString = s"$buildId#$taskIdx"
}
-class BuildSource(
+class BuildSource[E <: Environment](
taskId: TaskId,
- taskDef: TaskDef,
- executor: DockerExecutor,
+ taskDef: TaskDef[E],
+ executor: Executor[E],
mkdir: => File,
mkout: => OutputStream // TODO refactor this into a two-output stage
) extends GraphStage[SourceShape[Builder.BuildState]] {
@@ -36,7 +36,7 @@ class BuildSource(
implicit def ec = materializer.executionContext
lazy val instance: Future[ExecutionId] = executor.start(
- taskDef.environment.asInstanceOf[DockerEnvironment],
+ taskDef.environment,
taskDef.script,
mkdir,
mkout
@@ -85,7 +85,7 @@ object Builder {
sealed trait BuildState {
def taskId: TaskId
}
- case class TaskStarting(taskId: TaskId, taskDef: TaskDef) extends BuildState
+ case class TaskStarting(taskId: TaskId, taskDef: TaskDef[Environment]) extends BuildState
case class TaskRunning(taskId: TaskId, execId: ExecutionId) extends BuildState
case class TaskFinished(taskId: TaskId, status: Int) extends BuildState
diff --git a/crashboxd/src/main/scala/io/crashbox/ci/Parser.scala b/crashboxd/src/main/scala/io/crashbox/ci/Parser.scala
index 5a58612..b8ad89b 100644
--- a/crashboxd/src/main/scala/io/crashbox/ci/Parser.scala
+++ b/crashboxd/src/main/scala/io/crashbox/ci/Parser.scala
@@ -8,7 +8,7 @@ object Parser {
case class Success(buildDef: BuildDef) extends Result
case class Failure(error: String) extends Result
- implicit object TaskDefReader extends YamlReader[TaskDef] {
+ implicit object TaskDefReader extends YamlReader[TaskDef[_]] {
def read(value: YamlValue) = {
val items = value.convertTo[Map[String, YamlValue]]
val image = items
@@ -29,7 +29,7 @@ object Parser {
val tasks = items
.getOrElse("tasks",
throw new YamlFormatException("no tasks specified"))
- .convertTo[Map[String, TaskDef]]
+ .convertTo[Map[String, TaskDef[_]]]
BuildDef(tasks.values.toSeq)
}
}
diff --git a/crashboxd/src/main/scala/io/crashbox/ci/defs.scala b/crashboxd/src/main/scala/io/crashbox/ci/defs.scala
index df014a0..24ed530 100644
--- a/crashboxd/src/main/scala/io/crashbox/ci/defs.scala
+++ b/crashboxd/src/main/scala/io/crashbox/ci/defs.scala
@@ -3,5 +3,5 @@ package io.crashbox.ci
sealed trait Environment
case class DockerEnvironment(image: String) extends Environment
-case class TaskDef(environment: Environment, script: String)
-case class BuildDef(tasks: Seq[TaskDef])
+case class TaskDef[+E <: Environment](environment: E, script: String)
+case class BuildDef(tasks: Seq[TaskDef[_]])