def buildThirdPartyDoc()

in multiversion/src/main/scala/multiversion/outputs/ArtifactOutput.scala [70:136]


  def buildThirdPartyDoc(
      target: String,
      index: ResolutionIndex,
      outputIndex: collection.Map[String, ArtifactOutput]
  ): Doc = {
    val name = target.replace(':', '_').stripPrefix("//")
    val targetConfigs = index.thirdparty.depsByTargets.getOrElse(target, Nil)
    val jarsAndLabels = targetConfigs.flatMap { cfg =>
      val dependency = cfg.toCoursierDependency(index.thirdparty.scala)
      val reconciledDependency = index.reconciledDependency(dependency)
      outputIndex
        .get(reconciledDependency.bazelLabel)
        .map(o =>
          (
            o.mavenLabel,
            o.dependency,
            o.label + cfg.suffix,
            if (o.hasSources) Some(o.mavenSourcesLabel) else None,
          )
        )
    }

    val (jars, dependencies, depLabels, sourceJars) =
      if (jarsAndLabels.nonEmpty) {
        unzip4(jarsAndLabels)
      } else {
        // Some resolutions produce no artifacts because they configure a classifier that
        // doesn't exist. In this case, we return the dependencies that were resolved
        // alongside this non-existent artifact.
        unzip4(index.unevictedArtifacts.collect {
          case ResolvedDependency(config, dependency, _, _, _) if config.targets.contains(target) =>
            (dependency.mavenLabel, dependency, "_" + dependency.bazelLabel, None: Option[String])
        })
      }
    val sourceJarOpt = sourceJars.flatten.headOption

    val overriddingTargets = for {
      config <- targetConfigs
      dependency <- config.dependencies
      if index.thirdparty.overriddingTargets.contains(dependency)
    } yield dependency
    val allLabels = (overriddingTargets ++ depLabels).distinct
    val depTags = dependencies.distinct.flatMap(tags)
    sourceJarOpt match {
      case Some(sourceJar) =>
        TargetOutput(
          kind = "scala_import",
          "name" -> Docs.literal(name),
          "jars" -> Docs.array(jars: _*),
          "deps" -> Docs.array(allLabels: _*),
          "exports" -> Docs.array(allLabels: _*),
          "srcjar" -> Docs.literal(sourceJar),
          "tags" -> Docs.array(depTags: _*),
          "visibility" -> Docs.array("//visibility:public")
        ).toDoc
      case _ =>
        TargetOutput(
          kind = "scala_import",
          "name" -> Docs.literal(name),
          "jars" -> Docs.array(jars: _*),
          "deps" -> Docs.array(allLabels: _*),
          "exports" -> Docs.array(allLabels: _*),
          "tags" -> Docs.array(depTags: _*),
          "visibility" -> Docs.array("//visibility:public")
        ).toDoc
    }
  }