aboutsummaryrefslogtreecommitdiff
path: root/stage2/Lib.scala
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2017-02-27 19:07:50 +0800
committerChristopher Vogt <oss.nsp@cvogt.org>2017-02-27 19:26:09 +0800
commit599a9d83c65d56e0510e0b13aad30072a62703ab (patch)
treed2ac352a0b9ee968bad572e069ec1506b59680c7 /stage2/Lib.scala
parentaffcb0c8abb5578ff919489f3753a9f5c8d68c5d (diff)
downloadcbt-599a9d83c65d56e0510e0b13aad30072a62703ab.tar.gz
cbt-599a9d83c65d56e0510e0b13aad30072a62703ab.tar.bz2
cbt-599a9d83c65d56e0510e0b13aad30072a62703ab.zip
fix results of Seq of builds not being printed
Diffstat (limited to 'stage2/Lib.scala')
-rw-r--r--stage2/Lib.scala20
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
- )
+ ))
}
}