diff options
author | Jakob Odersky <jakob@odersky.com> | 2017-04-09 16:48:21 -0700 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2017-04-09 16:48:21 -0700 |
commit | 82cfb0ef1ab41ecc09ed0ccaf56704e14b654177 (patch) | |
tree | ae24ad2c7c42f9303c9c1800ec66fe68715f9921 | |
parent | 7f2467a3464c83e5458bc8d25159b8e091af52e9 (diff) | |
download | crashbox-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.scala | 10 | ||||
-rw-r--r-- | crashboxd/src/main/scala/io/crashbox/ci/Parser.scala | 4 | ||||
-rw-r--r-- | crashboxd/src/main/scala/io/crashbox/ci/defs.scala | 4 |
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[_]]) |