blob: 6f433806cd33d177e51e75b1397144fc2ea9fca7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
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."))
}
}
}
|