Groovy には少し慣れていませんが、ConfigSlurper を使用してファイルから取得したプロパティに変数文字列を一致させようとしています。スラーパー部分は正常に動作していますが、変数を含むプロパティを評価する正しい方法を理解できないようです。私は、evaluating-code-dynamically-in-groovyを見つけたときに暖かくなったと思いますが、完全にはわかりません。
//properties.groovy
jobs {
foo {
email="foo@email.com"
}
}
//myscript.groovy
def config = new ConfigSlurper().parse(new File('properties.groovy').toURI().toURL())
List jobs = (ArrayList) BazAPI.getArtifacts(bucket) // list of objects, foo is one
ListIterator jobIterator = jobs.listIterator();
while (jobIterator.hasNext()) {
Object j = jobIterator.next();
job_name = "${j.name}" //
email = config.jobs."${job_name}".email /* NEED TO FIGURE OUT HOW TO EVAL */
foo_email = config.jobs.foo.email //evaluates to the correct property in properties.groovy
//these values get fed to a DSL but to illustrate
println "${job_name}" // prints foo
println "${email}" // prints [:]
println "${foo_email}" // prints foo@email.com
}