blob: 020521c311a989fe572676399a6e525b6930ecdb (
plain) (
tree)
|
|
package io.crashbox.ci
import java.io.File
import java.nio.file.Files
import scala.collection.JavaConverters._
trait Parsers {
def defaultImage = "crashbox/default"
case class BuildDef(
image: String,
script: String
)
case class ParseError(message: String)
def parseBuild(workdir: File): Either[BuildDef, ParseError] = {
val file = new File(workdir, ".crashbox.txt")
if (!file.exists()) {
return Right(
ParseError("No build configuration file .crashbox.txt found."))
}
val lines = Files.readAllLines(file.toPath).asScala.map(_.trim)
val Pattern = """(\w+)\s*:\s*(.+)""".r
val image = lines
.collectFirst { case Pattern("image", s) => s }
.getOrElse(defaultImage)
val script = lines.collectFirst { case Pattern("script", s) => s }
script match {
case Some(s) => Left(BuildDef(image, s))
case None =>
Right(ParseError("No build script defined in configuration."))
}
}
}
|