diff options
author | Piotr Trzpil <piotr.trzpil@gmail.com> | 2017-03-15 21:01:22 +0000 |
---|---|---|
committer | Piotr Trzpil <piotr.trzpil@gmail.com> | 2017-03-15 21:01:22 +0000 |
commit | 16d4f162c2b35e21cb43ff15f5ece56d46253662 (patch) | |
tree | 1b511510bc38460eda2a6d724f7b7970d8658a6e /stage1 | |
parent | bbeb79bc32296c77d5fd21816bf7ab7323ab864a (diff) | |
download | cbt-16d4f162c2b35e21cb43ff15f5ece56d46253662.tar.gz cbt-16d4f162c2b35e21cb43ff15f5ece56d46253662.tar.bz2 cbt-16d4f162c2b35e21cb43ff15f5ece56d46253662.zip |
recursive pom variable substitution
Diffstat (limited to 'stage1')
-rw-r--r-- | stage1/resolver.scala | 42 |
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 _ ) } } |