def fromQuery()

in multiversion/src/main/scala/multiversion/indexes/TargetIndex.scala [46:82]


  def fromQuery(t: Target): TargetIndex = {
    def getStringAttribute(key: String): Option[String] =
      t.getRule().getAttributeList.asScala.find(_.getName() == key).map(_.getStringValue())
    def getStringListAttribute(key: String): List[String] =
      (for {
        attr <- t.getRule().getAttributeList().asScala.iterator
        if attr.getName() == key
        dep <- attr.getStringListValueList().asScala.iterator
      } yield dep).toList
    val deps =
      if (t.getRule.getRuleClass() == "alias")
        getStringAttribute("actual").map(List(_)).getOrElse(Nil)
      else getStringListAttribute("deps")
    val tags = getStringListAttribute("tags")
    val module = tags.collectFirst { case JvmModule(module) =>
      module
    }
    val version = tags.collectFirst { case JvmVersion(version) =>
      version
    }
    val classifier = tags.collectFirst { case JvmClassifier(classifier) =>
      classifier
    }
    val dependency = (module, version) match {
      case (Some(m), Some(v)) =>
        Some(
          SimpleDependency(SimpleModule(m.organization.value, m.name.value), v, classifier)
        )
      case _ => None
    }
    TargetIndex(
      name = t.getRule().getName(),
      deps = deps,
      tags = tags,
      dependency = dependency
    )
  }