aboutsummaryrefslogtreecommitdiff
path: root/stage1
diff options
context:
space:
mode:
authorPiotr Trzpil <piotr.trzpil@gmail.com>2017-03-15 21:01:22 +0000
committerPiotr Trzpil <piotr.trzpil@gmail.com>2017-03-15 21:01:22 +0000
commit16d4f162c2b35e21cb43ff15f5ece56d46253662 (patch)
tree1b511510bc38460eda2a6d724f7b7970d8658a6e /stage1
parentbbeb79bc32296c77d5fd21816bf7ab7323ab864a (diff)
downloadcbt-16d4f162c2b35e21cb43ff15f5ece56d46253662.tar.gz
cbt-16d4f162c2b35e21cb43ff15f5ece56d46253662.tar.bz2
cbt-16d4f162c2b35e21cb43ff15f5ece56d46253662.zip
recursive pom variable substitution
Diffstat (limited to 'stage1')
-rw-r--r--stage1/resolver.scala42
1 files changed, 24 insertions, 18 deletions
diff --git a/stage1/resolver.scala b/stage1/resolver.scala
index b40fb7b..1d539a2 100644
--- a/stage1/resolver.scala
+++ b/stage1/resolver.scala
@@ -363,27 +363,33 @@ case class BoundMavenDependency(
}
}
def lookup( xml: Node, accessor: Node => NodeSeq ): Option[String] = {
- //println("lookup in "++pomUrl)
+ // println("lookup in " + xml)
val Substitution = "\\$\\{([^\\}]+)\\}".r
- accessor(xml).headOption.map{v =>
- //println("found: "++v.text)
+
+ def matcherFunc(matcher: scala.util.matching.Regex.Match): String = {
+ val path = matcher.group(1)
+ val ret = properties.get(path).orElse(
+ transitivePom.reverse.flatMap{ d =>
+ Some(path.split("\\.").toList).collect{
+ case "project" :: path =>
+ path.foldLeft(d.pomXml:NodeSeq){ case (xml,tag) => xml \ tag }.text
+ }.filter(_ != "")
+ }.headOption
+ )
+ .getOrElse(
+ throw new Exception(s"Can't find $path in \n$properties.\n\npomParents: $transitivePom\n\n pomXml:\n$pomXml" )
+ )
+
+ Substitution.replaceAllIn(
+ ret,
+ matcherFunc _
+ )
+ }
+
+ accessor(xml).headOption.map { v =>
Substitution.replaceAllIn(
v.text,
- matcher => {
- val path = matcher.group(1)
- properties.get(path).orElse(
- transitivePom.reverse.flatMap{ d =>
- Some(path.split("\\.").toList).collect{
- case "project" :: path =>
- path.foldLeft(d.pomXml:NodeSeq){ case (xml,tag) => xml \ tag }.text
- }.filter(_ != "")
- }.headOption
- )
- .getOrElse(
- throw new Exception(s"Can't find $path in \n$properties.\n\npomParents: $transitivePom\n\n pomXml:\n$pomXml" )
- )
- //println("lookup "++path ++ ": "++(pomXml\path).text)
- }
+ matcherFunc _
)
}
}