Как получить значение из LinkedHashMap с помощью переменных? - PullRequest
0 голосов
/ 17 января 2019

Я хотел бы создать переменную, которая позволит мне получить доступ к различным структурам YAML.

envFile - это файл YAML, содержащий данные типа:

ENVNAME:
  MYSYS:
    MYSUBSYS:
      MYDETAIL:
        version: 1.0.0
        path: C:\wwwroot\sys
  MYSYS2:
    MYSUBSYS2:
      version: 1.0.1
      path: C:\wwwroot\sys2

Важно то, что MYSYS2 не имеет уровня MYDETAIL

В конвейере Дженкинса я использую:

envs = readYaml file: envFile

Тогда я могу получить значение версии, используя:

verNum = envs."${environment}"."${sysName}"."${subSysName}"."${detailName}".version

Но когда я хочу получить версию для MYSYS2, тогда я должен использовать (без detailName):

verNum = envs."${environment}"."${sysName}"."${subSysName}".version

Так что мне нужна переменная зависит от sysName ..

Я хотел бы использовать синтаксис, такой как:

if (sysName == 'MYSYS'){
  mySuperVariable = "${environment}"."${sysName}"."${subSysName}"."${detailName}"
}
else if (sysName == 'MYSYS2'){
  mySuperVariable = "${environment}"."${sysName}"."${subSysName}"
}

(...)

sysVer = envs."${mySuperVariable}".version

1 Ответ

0 голосов
/ 17 января 2019

Если я правильно помню, вы можете получить доступ к картам через map[key][sub-key].Так что в вашем случае это будет:

if (sysName == 'MYSYS'){
  mySuperVariable = envs[environment][sysName][subSysName][detailName]
}
else if (sysName == 'MYSYS2'){
  mySuperVariable = envs[environment][sysName][subSysName]
}

(...)

sysVer = mySuperVariable['version']
...