summaryrefslogtreecommitdiff
path: root/crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2017-03-18 01:58:01 -0400
committerJakob Odersky <jakob@odersky.com>2017-03-18 01:58:01 -0400
commitdff97b40df39e5eb391e1fc30ca47180384f1747 (patch)
tree76d1a4d3af4c8a0b8b316a151d40493e8f22957b /crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala
parent3f00b87a022e92e3bf341d40d05d81b5538e4974 (diff)
downloadcrashbox-ci-nocake.tar.gz
crashbox-ci-nocake.tar.bz2
crashbox-ci-nocake.zip
Refactor trait-based dependencies to constructor parametersnocake
Diffstat (limited to 'crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala')
-rw-r--r--crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala34
1 files changed, 34 insertions, 0 deletions
diff --git a/crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala b/crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala
new file mode 100644
index 0000000..a8b4f19
--- /dev/null
+++ b/crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala
@@ -0,0 +1,34 @@
+package io.crashbox.ci
+
+import java.io.File
+import java.nio.file.Files
+
+import scala.collection.JavaConverters._
+
+object Parser {
+
+ def defaultImage = "crashbox/default"
+
+ 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."))
+ }
+ }
+}