Reputation: 179
I would like to create variable which allows me to access to vary YAML structures.
envFile is the YAML file contains data like:
ENVNAME:
MYSYS:
MYSUBSYS:
MYDETAIL:
version: 1.0.0
path: C:\wwwroot\sys
MYSYS2:
MYSUBSYS2:
version: 1.0.1
path: C:\wwwroot\sys2
Important is that MYSYS2 doesn't have MYDETAIL level
In Jenkins pipeline I'm using:
envs = readYaml file: envFile
Then I can get version value using:
verNum = envs."${environment}"."${sysName}"."${subSysName}"."${detailName}".version
But when I want get version for MYSYS2 then I should use (no detailName):
verNum = envs."${environment}"."${sysName}"."${subSysName}".version
So I need variable depends on sysName..
I would like to use syntax like:
if (sysName == 'MYSYS'){
mySuperVariable = "${environment}"."${sysName}"."${subSysName}"."${detailName}"
}
else if (sysName == 'MYSYS2'){
mySuperVariable = "${environment}"."${sysName}"."${subSysName}"
}
(...)
sysVer = envs."${mySuperVariable}".version
Upvotes: 0
Views: 698
Reputation: 3759
If I remember correctly, you could access maps via map[key][sub-key]
. So in your case it would be:
if (sysName == 'MYSYS'){
mySuperVariable = envs[environment][sysName][subSysName][detailName]
}
else if (sysName == 'MYSYS2'){
mySuperVariable = envs[environment][sysName][subSysName]
}
(...)
sysVer = mySuperVariable['version']
Upvotes: 1