From dff97b40df39e5eb391e1fc30ca47180384f1747 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Sat, 18 Mar 2017 01:58:01 -0400 Subject: Refactor trait-based dependencies to constructor parameters --- .../src/main/scala/io/crashbox/ci/Parser.scala | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala (limited to 'crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala') 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.")) + } + } +} -- cgit v1.2.3