private def extractRepositoryData()

in extractor/src/main/scala/org/jetbrains/sbt/extractors/RepositoryExtractor.scala [117:164]


  private def extractRepositoryData(state: State, options: Options, acceptedProjects: scala.collection.immutable.Seq[ProjectRef]): Task[RepositoryData] = {
    def classpathTypes(projectRef: ProjectRef): Set[String] =
      (projectRef / Keys.classpathTypes).getValueOrElse(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(_)).toMap)
    val updateAllClassifiersTask =
      Keys.updateClassifiers
        .forAllProjects(state, acceptedProjects)
        .map(_.mapValues(new UpdateReportAdapter(_)))
        .onlyIf(options.resolveSourceClassifiers || options.resolveJavadocClassifiers)

    for {
      updateReports <- updateAllTask
      updateClassifiersReports <- updateAllClassifiersTask
      classpathConfiguration <- classpathConfigurationTask
    } yield {

      val projectToClasspathConfig: Map[ProjectRef, Seq[Configuration]] =
        classpathConfiguration.groupBy(_._1._1)
          .mapValues(_.map { case ((_, _), c2) => c2 })
          .toMap

      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),
        ref => classpathTypes(ref),
        classpathAndDependencyConfigs
      )
      extractor.extract
    }
  }