подстановочные знаки в атрибутах шеф-повара - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь получить версию установленного пакета Firefox от OHAI для машины с Windows

Вывод ohai содержит информацию о пакетах, например

 "ohai_time": 1540893742.872569,
 "packages": {
 "Mozilla Firefox 62.0.2 (x64 en-US)": {
 "version": "62.0.2",
 "publisher": "Mozilla"
 },
 "Mozilla Maintenance Service": {
 "version": "62.0.2",
 "publisher": "Mozilla"
 },
 "Symantec NetBackup Client": {
 "version": "7.7.2",
 "publisher": "Symantec Corporation",
 "installdate": "20180618"
  }, .....
  ......so on...

проблема в том, что я не могу использовать полное имя, которое используется здесь, потому что оно содержит саму версию

иначе я мог бы использовать узел ['пакеты'] ['Mozilla Firefox 62.0.2 (x64 en-US)'] ['версия']

Вместо этого я хочу использовать что-то вроде узла ['packages'] ["Mozilla *"] ['version']

Я пробовал использовать циклы и .include? Но не сработало. Какие у меня есть варианты? Использование рубина или циклов или чего-либо еще

Спасибо за ваши ответы заранее.

1 Ответ

0 голосов
/ 30 октября 2018

В случае вставленного хеша вы можете использовать метод find:

node["packages"].find { |key, _| key =~ /Mozilla Firefox/ }
 => [:"Mozilla Firefox 62.0.2 (x64 en-US)", {:version=>"62.0.2", :publisher=>"Mozilla"}]

Просто имейте в виду, что он преобразует ваш хэш в массив, но его можно легко вернуть.

...