in extractor-legacy-0.13/src/main/scala/org/jetbrains/sbt/extractors/RepositoryExtractor.scala [94:142]
private def extractRepositoryData(state: State, options: Options, acceptedProjects: Seq[ProjectRef]): Task[RepositoryData] = {
def classpathTypes(projectRef: ProjectRef) =
Keys.classpathTypes.in(projectRef).getOrElse(state, Set.empty)
val dependencyConfigurations = StructureKeys.dependencyConfigurations
.forAllProjects(state, acceptedProjects)
.toMap
val classpathConfigurationTask = sbt.Keys.classpathConfiguration
.forAllProjectsAndConfigurations(state, acceptedProjects, dependencyConfigurations)
val updateAllTask: Task[Map[ProjectRef, UpdateReportAdapter]] =
Keys.update
.forAllProjects(state, acceptedProjects)
.map(_.mapValues(new UpdateReportAdapter(_)))
val updateAllClassifiersTask =
Keys.updateClassifiers
.forAllProjects(state, acceptedProjects)
.map(_.mapValues(new UpdateReportAdapter(_)))
.onlyIf(options.resolveSourceClassifiers || options.resolveJavadocClassifiers)
for {
updateReports <- updateAllTask
updateClassifiersReports <- updateAllClassifiersTask
classpathConfiguration <- classpathConfigurationTask
} yield {
def extractClasspathConfigs(projectToConfigTuple: Seq[((ProjectRef, Configuration), Configuration)]): Seq[Configuration] =
projectToConfigTuple.map { case ((_, _), c2) => c2 }
val projectToClasspathConfig = classpathConfiguration.groupBy(_._1._1)
.mapValues(extractClasspathConfigs)
val classpathAndDependencyConfigs = projectToClasspathConfig.map { case (project, configs) =>
val projectDependencyConfigs = dependencyConfigurations.getOrElse(project, Seq.empty)
val uniqueConfigNames = (projectDependencyConfigs ++ configs).groupBy(_.name).keys.toSeq
project -> uniqueConfigNames
}
val extractor = new RepositoryExtractor(
acceptedProjects,
updateReports.apply,
updateClassifiersReports.map(_.apply),
classpathTypes,
classpathAndDependencyConfigs
)
extractor.extract
}
}