LINUX.ORG.RU

Насколько распространена автогенерация дефолтного конфига?

 , ,


0

1

Пишу программу, которая питается конфигами, но подразумевается, что конфигов у пользователя будет много. Один конфиг для этой постоянной задачи, другой – для той.
А ещё бывают одноразовые задачи. Сделал бяку и забыл.
Я сначала подготовил просто типовый файлик-конфиг и помнил где он лежит. Скопировал, подрихтовал, скормил программе и можно дальше всякими непотребствами заниматься.
Но потом мне стало лень. Лень помнить где этот дефолтный конфиг. Лень копировать и, главное, лень рихтовать: в конфиге есть 2 пути к директориям. Заполнять их – боль и уныние, недостойное 21-го века автоматизации.
Как я сделал? Cdую в нужную директорию, дёргаю программу с параметром «сгенерировать заготовку конфига», программа выплёвывает конфиг с уже подставленными путями и всё такое, потом остаётся провести совсем уж мелкий тюнинг конфига и можно запускать программу.
Вот только не помню я такого подхода в общей практике. Не сталкивался. Может так не делают и на то есть объективные причины?



Последнее исправление: Usruser (всего исправлений: 1)

Вот только не помню я такого подхода в общей практике.

В общей практике делают так, как удобнее.

seiken ★★★★★
()

Почему нет? Мне такой подход видится самым удобным - когда

  • Дефолтный конфиг зашит в самой программе, т.е. её можно запустить вообще без конфига и получить какое-то разумное поведение по умолчанию.
  • Конфиг в виде файла есть, но полностью закомментирован, т.е. работает как документация, и можно не разбираясь со всеми опциями включить только нужные.
  • Текущий runtime конфиг (т.е. то что получилось внутри программы из зашитого + модификации из системного конфига, если такой есть и там что-то раскомментировано + модификации из пользовательского конфига в ~/.config, если такой есть и там что-то раскомментированл + модификации из аргументов командной строки, которы маппятся на настройки) можно сдампить.
  • Особенно классно, если при дампе получается конфиг из 2 пункта, т.е. сразу с описаниями опций в комментариях, и закомментированными опциями когда из значение совпадает с умолчальным зашитым.

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

Не уверен про последний пункт, но первые 3 поддерживаются многим софтом - например, postfix (postconf), tor (tor –dump-config), postgresql.

slovazap ★★★★★
()

Взял да сделал так себе,вполне нормальное решение, можно просто зашить в исходники заготовку/шаблон и по ключу к программе выплёвывать его, зачем смотреть на других. Программ генерирующих себе конфиги тонны.

LINUX-ORG-RU ★★★★★
()

Делают не так. Дефолтный конфиг (точнее, алгоритм его генерации) зашит в бинарнике (как и у тебя), но записывать его в файл совсем не нужно - просто программа без файла конфига должна использовать дефолт. Опция «сдампить текущий конфиг в файл» конечно не помешает, но для других целей - для отладки алгоритма генерации дефолта и как референс при ручном конфигурировании (впрочем, не указанные в ручном конфиге параметры опять же никто не мешает брать автоматически из дефолта).

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

Вот как раз содержание этого мелкого тюнинга и есть настоящий конфиг, который должен храниться в файле.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

должна использовать дефолт.

Дефолт невозможен. Я не вижу ни одного разумного варианта конфига без хоть какого-то ввода от пользователя. Такая вот программа.

Usruser
() автор топика
Ответ на: комментарий от Usruser

Ты же написал что она генерирует какой-то конфиг. Вот вместо

прога(генератор) -> файл -> правки -> опять прога

можно сделать

правки -> прога

Возможно, для этого придётся сменить формат конфига на более подходящий.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Usruser

Дефолт невозможен. Я не вижу ни одного разумного варианта конфига без хоть какого-то ввода от пользователя. Такая вот программа.

конфиги можно разбить на несколько. более дефолтные, стабильные и большие. и маленькие допконфиги юзера. чтобы мог настроить какие-то фичи под себя. прога при старте берет все конфиги и настраивается как надо.

если настройки под юзера совсем маленькие можно их передавать в комстроке. но тут надо знать меру.

alysnix ★★★
()

Doxygen имеет опцию генерации конфигов с подробными комментариями что за что отвечает. Очень удобно.

RussianWarShip
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.