Рекомендуемый способ автоматического обновления значений конфигурации?

Чтобы дать некоторый контекст, у меня есть задача на сервере сборки, которая требует обновления значения поля файла конфигурации (в формате yaml) и отправки в репозиторий для последующего использования. Моя немедленная мысль заключалась в использовании какой-либо формы поиска / замены регулярных выражений, но я ' Интересно, есть ли другие / лучшие способы сделать это?

то есть:

# Before
my_field : 2

# After
my_field : 3.1

Конечно, файл будет содержать другие поля со значениями, которые должны быть нетронутыми.

РЕДАКТИРОВАТЬ

Так, согласно предложению rbtux, я нашел модули ruby ​​yaml, которые решают мою проблему. Вот как это работает:

source.yaml:

---
some_value: 1
my_value: 2
new_value: 3

replace.ruby:

require 'yaml'

hiera = YAML.load_file('source.yaml');

hiera['my_value'] = "other data"

File.open('source.yaml','r+') do |h| 
   h.write hiera.to_yaml
end

puts hiera['my_value'] # outputs my_value as 'other data' with other variables intact

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

1 ответ

Решение

Лучший способ - выбрать язык сценариев perl, python, ruby ​​и т. д., который предоставляет утилиты манипулирования yaml.

если файл достаточно прост, вы можете обойтись без взлома sed:

sed 's/^\(\s*my_field\s*:\s*\).*/\1new-value/' 
Другие вопросы по тегам