private def extractRepositoryData()

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
    }
  }