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