Pedro Witzel
Pedro Witzel

Reputation: 368

GString inside a Gstring in gradle/groovy

I need to use a variable as a part of a string that will be used to address another variable in a gstring.
In syntesys, what I'd like to do is: ${${it}_checkout}

The whole code line would be:
def checkouts = repos.collect{"${it} = ${${it}_checkout} "}

With repos being a list of repositories to checkout.
Each repo has an property called <repo>_checkout.

For instance, if I have two repos, called foo and bar, I'll have two variables called foo_checkout and bar_checkout, containing the branches to be checkouted.
I'm trying to construct the following string: "foo=$foo_checkout bar=$bar_checkout".
That will be translated to "foo=master bar=dev"

Is there a way ?

Upvotes: 0

Views: 1005

Answers (1)

tim_yates
tim_yates

Reputation: 171084

Yeh, just do:

def checkouts = repos.collect{ "$it = ${it}_checkout" }

Or, depending on how you declare your properties, you can do:

root_checkout = 'woo'
repo_checkout = 'yay'

['root', 'repo'].collect { r -> "$r = ${getProperty(r + '_checkout')}" }

Upvotes: 1

Related Questions