From b639453a2483da1cba2a1b23f1dd955d05ff6ab8 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 27 Jun 2017 18:31:07 +0300 Subject: Library sources --- stage2/plugins/ExportBuildInformation.scala | 36 +++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/stage2/plugins/ExportBuildInformation.scala b/stage2/plugins/ExportBuildInformation.scala index be61609..597b7d8 100644 --- a/stage2/plugins/ExportBuildInformation.scala +++ b/stage2/plugins/ExportBuildInformation.scala @@ -33,8 +33,8 @@ object BuildInformation { parentBuild: Option[String], scalacOptions: Seq[String] ) - - case class Library( name: String, jars: Seq[File] ) + + case class Library( name: String, jars: Seq[LibraryJar] ) case class BinaryDependency( name: String ) @@ -42,6 +42,14 @@ object BuildInformation { case class ScalaCompiler( version: String, jars: Seq[File] ) + case class LibraryJar( jar: File, jarType: JarType.JarType ) + + object JarType extends Enumeration { + type JarType = Value + val Binary = Value("binary") + val Source = Value("source") + } + object Project { def apply(build: BaseBuild): Project = new BuildInformationExporter(build).exportBuildInformation @@ -161,15 +169,25 @@ object BuildInformation { .flatten .distinct - private def exportLibrary(mavenDependency: BoundMavenDependency) = { - val name = formatMavenDependency(mavenDependency.mavenDependency) - val jars = (mavenDependency +: mavenDependency.transitiveDependencies) - .map(_.asInstanceOf[BoundMavenDependency].jar) - Library(name, jars) + private def exportLibrary(dependency: BoundMavenDependency) = { + val name = formatMavenDependency(dependency.mavenDependency) + val jars = (dependency +: dependency.transitiveDependencies) + .map(_.asInstanceOf[BoundMavenDependency]) + val binaryJars = jars + .map(_.jar) + .map(LibraryJar(_, JarType.Binary)) + + implicit val logger: Logger = rootBuild.context.logger + implicit val transientCache: java.util.Map[AnyRef, AnyRef] = rootBuild.context.transientCache + implicit val classLoaderCache: ClassLoaderCache = rootBuild.context.classLoaderCache + val sourceJars = jars + .map { d => d.copy(mavenDependency = d.mavenDependency.copy(classifier = Classifier.sources)).jar } + .map(LibraryJar(_, JarType.Source)) + Library(name, binaryJars ++ sourceJars) } private def exportLibrary(file: File) = - Library("CBT:" + file.getName.stripSuffix(".jar"), Seq(file)) + Library("CBT:" + file.getName.stripSuffix(".jar"), Seq(LibraryJar(file, JarType.Binary))) private def collectParentBuilds(build: BaseBuild): Seq[BaseBuild] = build.context.parentBuild @@ -245,7 +263,7 @@ object BuildInformationSerializer { private def serialize(library: BuildInformation.Library): Node = - {library.jars.map(j => {j})} + {library.jars.map(j => {j.jar})} private def serialize(compiler: BuildInformation.ScalaCompiler): Node = -- cgit v1.2.3 From 1a78ac34353cc15dfc2de67ad1f4e71f9d83cd61 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 28 Jun 2017 14:24:23 +0300 Subject: Add handling of not existing source jars --- stage2/plugins/ExportBuildInformation.scala | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/stage2/plugins/ExportBuildInformation.scala b/stage2/plugins/ExportBuildInformation.scala index 597b7d8..bfc3a66 100644 --- a/stage2/plugins/ExportBuildInformation.scala +++ b/stage2/plugins/ExportBuildInformation.scala @@ -4,6 +4,7 @@ import cbt._ import java.io._ import java.nio.file._ import scala.xml._ +import scala.util._ trait ExportBuildInformation { self: BaseBuild => def buildInfoXml: String = @@ -181,7 +182,17 @@ object BuildInformation { implicit val transientCache: java.util.Map[AnyRef, AnyRef] = rootBuild.context.transientCache implicit val classLoaderCache: ClassLoaderCache = rootBuild.context.classLoaderCache val sourceJars = jars - .map { d => d.copy(mavenDependency = d.mavenDependency.copy(classifier = Classifier.sources)).jar } + .map { d => + Try( + d.copy(mavenDependency = d.mavenDependency.copy(classifier = Classifier.sources)).jar + ) + } + .flatMap { + case Success(j) => Some(j) + case Failure(e) => + logger.log("ExportBuildInformation", s"Can not load a $name library sources. Skipping") + None + } .map(LibraryJar(_, JarType.Source)) Library(name, binaryJars ++ sourceJars) } -- cgit v1.2.3 From 35c1488e2a1afe26b53399ccbc94b1730c85f377 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 27 Jun 2017 00:17:56 +0300 Subject: Add extra modules resolving --- stage2/plugins/ExportBuildInformation.scala | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/stage2/plugins/ExportBuildInformation.scala b/stage2/plugins/ExportBuildInformation.scala index bfc3a66..ea1afeb 100644 --- a/stage2/plugins/ExportBuildInformation.scala +++ b/stage2/plugins/ExportBuildInformation.scala @@ -8,7 +8,7 @@ import scala.util._ trait ExportBuildInformation { self: BaseBuild => def buildInfoXml: String = - BuildInformationSerializer.serialize(BuildInformation.Project(self)).toString + BuildInformationSerializer.serialize(BuildInformation.Project(self, context.args)).toString } object BuildInformation { @@ -52,10 +52,12 @@ object BuildInformation { } object Project { - def apply(build: BaseBuild): Project = - new BuildInformationExporter(build).exportBuildInformation + def apply(build: BaseBuild, args: Seq[String]): Project = { + val extraModuleNames: Seq[String] = args.lift(0).map(_.split(":").toSeq).getOrElse(Seq.empty) + new BuildInformationExporter(build, extraModuleNames).exportBuildInformation + } - class BuildInformationExporter(rootBuild: BaseBuild) { + class BuildInformationExporter(rootBuild: BaseBuild, extraModuleNames: Seq[String]) { def exportBuildInformation: Project = { val moduleBuilds = transitiveBuilds(rootBuild) val libraries = moduleBuilds @@ -64,7 +66,13 @@ object BuildInformation { .distinct val cbtLibraries = convertCbtLibraries val rootModule = exportModule(rootBuild) - val modules = moduleBuilds + + val extraModuleBuilds = extraModuleNames + .map(f => new File(f)) + .filter(f => f.exists && f.isDirectory) + .map(f => DirectoryDependency(f)(rootBuild.context).dependency.asInstanceOf[BaseBuild]) + .flatMap(transitiveBuilds) + val modules = (moduleBuilds ++ extraModuleBuilds) .map(exportModule) .distinct val scalaCompilers = modules -- cgit v1.2.3 From 2c1d4d79ca27fdad32a4adb0980600d4b2bb7639 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 28 Jun 2017 16:57:49 +0300 Subject: Indetation fixes --- stage2/plugins/ExportBuildInformation.scala | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/stage2/plugins/ExportBuildInformation.scala b/stage2/plugins/ExportBuildInformation.scala index ea1afeb..c5c69ab 100644 --- a/stage2/plugins/ExportBuildInformation.scala +++ b/stage2/plugins/ExportBuildInformation.scala @@ -191,9 +191,7 @@ object BuildInformation { implicit val classLoaderCache: ClassLoaderCache = rootBuild.context.classLoaderCache val sourceJars = jars .map { d => - Try( - d.copy(mavenDependency = d.mavenDependency.copy(classifier = Classifier.sources)).jar - ) + Try(d.copy(mavenDependency = d.mavenDependency.copy(classifier = Classifier.sources)).jar) } .flatMap { case Success(j) => Some(j) -- cgit v1.2.3