diff options
author | Jakob Odersky <jakob@odersky.com> | 2017-03-18 01:58:01 -0400 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2017-03-18 01:58:01 -0400 |
commit | dff97b40df39e5eb391e1fc30ca47180384f1747 (patch) | |
tree | 76d1a4d3af4c8a0b8b316a151d40493e8f22957b /crashbox-server/src/main/scala/io/crashbox/ci/Parser.scala | |
parent | 3f00b87a022e92e3bf341d40d05d81b5538e4974 (diff) | |
download | crashbox-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.scala | 34 |
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.")) + } + } +} |