aboutsummaryrefslogtreecommitdiff
path: root/stage2/plugins/ExportBuildInformation.scala
diff options
context:
space:
mode:
Diffstat (limited to 'stage2/plugins/ExportBuildInformation.scala')
-rw-r--r--stage2/plugins/ExportBuildInformation.scala39
1 files changed, 16 insertions, 23 deletions
diff --git a/stage2/plugins/ExportBuildInformation.scala b/stage2/plugins/ExportBuildInformation.scala
index 720ccbe..3fd7394 100644
--- a/stage2/plugins/ExportBuildInformation.scala
+++ b/stage2/plugins/ExportBuildInformation.scala
@@ -160,32 +160,25 @@ object BuildInformation {
.map(_.toFile)
}
- private def lazyBuild(dependency: Dependency): Seq[BaseBuild] =
- dependency match {
- case l: LazyDependency =>
- l.dependency match {
- case d: BaseBuild => Seq(d)
- case d: LazyDependency => lazyBuild(d.dependency)
- case _ => Seq.empty
- }
- case d: BaseBuild => Seq(d)
- case _ => Seq.empty
- }
-
// More effectively to call on a all builds at once rather than on one per time
private def transitiveBuilds(builds: Seq[BaseBuild], skipTests: Boolean = false): Seq[BaseBuild] = {
def traverse(visited: Seq[BaseBuild], build: BaseBuild): Seq[BaseBuild] =
- (build +: build.transitiveDependencies)
- .collect {
- case d: BaseBuild =>
- Seq(d) ++ parentBuild(d) ++ (if (!skipTests) testBuild(d) else Seq.empty)
- case d: LazyDependency =>
- lazyBuild(d.dependency)
- }
- .flatten
- .distinct
- .filterNot(visited.contains)
- .foldLeft(build +: visited)(traverse)
+ if (visited.contains(build))
+ visited
+ else
+ (Seq(build) ++
+ build.transitiveDependencies ++
+ parentBuild(build) ++
+ (if (!skipTests) testBuild(build) else Seq.empty)
+ )
+ .collect {
+ case d: BaseBuild =>
+ d
+ case d: LazyDependency if d.dependency.isInstanceOf[BaseBuild] =>
+ d.dependency.asInstanceOf[BaseBuild]
+ }
+ .filterNot(visited.contains)
+ .foldLeft(build +: visited)(traverse)
builds.foldLeft(Seq.empty[BaseBuild])(traverse)
}