diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-27 19:07:50 +0800 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-27 19:26:09 +0800 |
commit | 599a9d83c65d56e0510e0b13aad30072a62703ab (patch) | |
tree | d2ac352a0b9ee968bad572e069ec1506b59680c7 /stage2 | |
parent | affcb0c8abb5578ff919489f3753a9f5c8d68c5d (diff) | |
download | cbt-599a9d83c65d56e0510e0b13aad30072a62703ab.tar.gz cbt-599a9d83c65d56e0510e0b13aad30072a62703ab.tar.bz2 cbt-599a9d83c65d56e0510e0b13aad30072a62703ab.zip |
fix results of Seq of builds not being printed
Diffstat (limited to 'stage2')
-rw-r--r-- | stage2/Lib.scala | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/stage2/Lib.scala b/stage2/Lib.scala index 0c103af..854a50a 100644 --- a/stage2/Lib.scala +++ b/stage2/Lib.scala @@ -152,7 +152,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ } def callReflective[T <: AnyRef]( obj: T, code: Option[String], context: Context ): ExitCode = { - callInternal( obj, code.toSeq.flatMap(_.split("\\.").map( NameTransformer.encode )), Nil, context ) match { + callInternal( obj, code.toSeq.flatMap(_.split("\\.").map( NameTransformer.encode )), Nil, context ).map { case (obj, code, None) => val s = render(obj) if(s.nonEmpty) @@ -165,7 +165,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ if(s.nonEmpty) System.err.println(s) code getOrElse ExitCode.Failure - } + }.reduceOption(_ && _).getOrElse( ExitCode.Failure ) } private def render[T]( obj: T ): String = { @@ -179,7 +179,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ } } - private def callInternal[T <: AnyRef]( obj: T, members: Seq[String], previous: Seq[String], context: Context ): (Option[Object], Option[ExitCode], Option[String]) = { + private def callInternal[T <: AnyRef]( obj: T, members: Seq[String], previous: Seq[String], context: Context ): Seq[(Option[Object], Option[ExitCode], Option[String])] = { members.headOption.map{ taskName => logger.lib("Calling task " ++ taskName.toString) taskMethods(obj.getClass).get(taskName).map{ method => @@ -187,12 +187,12 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ result match { case code if code.getClass.getSimpleName == "ExitCode" => // FIXME: ExitCode needs to be part of the compatibility interfaces - (None, Some(ExitCode(Stage0Lib.get(code,"integer").asInstanceOf[Int])), None) - case Seq(b, bs @ _*) if (b +: bs).forall(_.isInstanceOf[BaseBuild]) => - bs.map( b => callInternal(b.asInstanceOf[BaseBuild], members.tail, previous :+ taskName, context) ).head + Seq((None, Some(ExitCode(Stage0Lib.get(code,"integer").asInstanceOf[Int])), None)) + case bs: Seq[_] if bs.size > 0 && bs.forall(_.isInstanceOf[BaseBuild]) => + bs.flatMap( b => callInternal(b.asInstanceOf[BaseBuild], members.tail, previous :+ taskName, context) ) case _ => callInternal(result, members.tail, previous :+ taskName, context) } - }.getOrElse( (None, None, None) ) + }.getOrElse( Seq( (None, None, None) ) ) }.getOrElse{ val folder = NameTransformer.decode(taskName) if( context != null && (context.workingDirectory / folder).exists ){ @@ -206,11 +206,11 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ newContext ) } else { - ( Some(obj), None, Some("\nMethod not found: " ++ (previous :+ taskName).mkString(".") ++ "\n") ) + Seq( ( Some(obj), None, Some("\nMethod not found: " ++ (previous :+ taskName).mkString(".") ++ "\n") ) ) } } }.getOrElse{ - ( + Seq(( Some( obj.getClass.getMethods.find(m => m.getName == "apply" && m.getParameterCount == 0).map( _.invoke(obj) @@ -218,7 +218,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ ), None, None - ) + )) } } |