aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Kirillov <darthorimar@users.noreply.github.com>2017-07-11 18:50:03 +0300
committerIlya Kirillov <darthorimar@users.noreply.github.com>2017-07-17 19:30:53 +0300
commit62ea3f3a7667e37fe1321ae23a99c7304f76d3ba (patch)
treef80b6b94ec6133915c5ce0d857cd59b01e9da3fd
parent5b8dddabbaad882e48b68c118cd36e0b8be7d72a (diff)
downloadcbt-62ea3f3a7667e37fe1321ae23a99c7304f76d3ba.tar.gz
cbt-62ea3f3a7667e37fe1321ae23a99c7304f76d3ba.tar.bz2
cbt-62ea3f3a7667e37fe1321ae23a99c7304f76d3ba.zip
Argument parsing improovement
-rw-r--r--stage2/plugins/ExportBuildInformation.scala33
1 files changed, 24 insertions, 9 deletions
diff --git a/stage2/plugins/ExportBuildInformation.scala b/stage2/plugins/ExportBuildInformation.scala
index 10da9eb..2f07ff0 100644
--- a/stage2/plugins/ExportBuildInformation.scala
+++ b/stage2/plugins/ExportBuildInformation.scala
@@ -63,8 +63,13 @@ object BuildInformation {
private object ExportParameters {
def apply(args: Seq[String]): ExportParameters = {
val argumentParser = new ArgumentParser(args)
- val extraModulePaths: Seq[String] = argumentParser.value("extraModules").map(_.split(":").toSeq).getOrElse(Seq.empty)
- val needCbtLibs: Boolean = argumentParser.value("needCbtLibs").map(_.toBoolean).getOrElse(true)
+ val extraModulePaths: Seq[String] = argumentParser.value("extraModules")
+ .map(_.split(":").toSeq)
+ .getOrElse(Seq.empty)
+ .filterNot(_.isEmpty)
+ val needCbtLibs: Boolean = argumentParser.value("needCbtLibs")
+ .map(_.toBoolean)
+ .getOrElse(true)
ExportParameters(extraModulePaths, needCbtLibs)
}
}
@@ -230,12 +235,13 @@ object BuildInformation {
.toSeq
private def testBuild(build: BaseBuild): Seq[BaseBuild] =
- Try(build.test).toOption
+ Try(build.test)
+ .toOption
+ .toSeq
.flatMap {
- case testBuild: BaseBuild => { println(testBuild.projectDirectory) ; Some(testBuild) }
- case _ => None
+ case testBuild: BaseBuild => Seq(testBuild)
+ case _ => Seq.empty
}
- .toSeq
private def resolveScalaCompiler(scalaVersion: String) =
rootBuild.Resolver(mavenCentral, sonatypeReleases).bindOne(
@@ -317,9 +323,18 @@ object BuildInformationSerializer {
class ArgumentParser(arguments: Seq[String]) {
- val argumentsMap =
- arguments.grouped(2).map{ case Seq(k,v) => k.stripPrefix("--").stripSuffix("=") -> v }.toMap
+ val argumentsMap = (arguments :+ "")
+ .sliding(2)
+ .map(_.toList)
+ .foldLeft(Map.empty[String, Option[String]]) {
+ case (m, Seq(k, v)) if k.startsWith("--") && !v.startsWith("--") => m + (k -> Some(v))
+ case (m, k::_) if k.startsWith("--") => m + (k -> None)
+ case (m, s) => m
+ }
def value(key: String): Option[String] =
- argumentsMap.get(key)
+ argumentsMap.get(key).flatten
+
+ def persists(key: String) =
+ argumentsMap.isDefinedAt(key)
} \ No newline at end of file