Open kelizarov opened 3 years ago
Читал про dhall, впечатляет. Но не очень понимаю, какую проблему он может решить, можешь привести пример?
config/local.conf
не содержит какой-то путаницы или дублирования, так что я не понимаю профит переезда на Dhall.
А вот остальную пачку конфигов не помешало бы перевести на что-то программируемое, поскольку их много и в них дублируются хосты, порты и прочее, но docker и liquibase вряд ли поддерживают Dhall нативно, а значит, придется генерировать их конфиги на лету. Dhall умеет генерировать JSON, YAML и вроде даже шелл, но у нас еще есть liquibase.properties, а генератора properties-файлов я не нашел. Есть способы генерировать произвольный текст.
Ну вот кстати как минимум генерация properties файлов выглядит неплохой идеей :)
Кстати вот как мы сейчас генерим у нас на проекте в рамках шага CI пайплайна нашего одной здоровой командой:
"printf 'classpath: /opt/jdbc/postgres-jdbc.jar\ndriver: org.postgresql.Driver\nurl: jdbc:postgresql://%s/%s\nusername: %s\npassword: %s\nlogLevel: info\nchangeLogFile: changelog.xml' $DB_HOST:$DB_PORT $DB_NAME $DB_USER $DB_PASS > liquibase.properties"
У configurator
есть небольшой косяк с экранированием $
знака. Дело в том что он когда видит доллар в тексте, то начинает распознавать следующий символ как переменную окружения, а сам доллар опускать из финальной строки которая грузится в память программы. И получается чтобы $
остался в строке нужно его дублировать. И вот подобное поведения меня крайне не устраивает в самом configurator
пусть она довольно простая и имеет хот-релоад.
Но мне кажется что для конфигов гораздо лучше использовать более тайп-сейф решение, для DHall есть даже своя собственная IDE которая помогает тайп-чекнуть сам конфиг, пржде чем его чекнет хаскелл в рантайме.
У configurator есть небольшой косяк с экранированием $ знака.
я с этим сталкивался кстати. Ещё проблема, что интерполяция только для строк есть и если надо численное знаение из env-а пробросить, то придётся пострадать
Интересно, Makefile тоже так обращаются с долларами. В скриптах приходится удваивать доллар, и это раздражает, если каждый день эти мейкфайлы не пишешь.
Предлагаю рассмотреть вариант использования dhall для настройки конфиг файлов на проект, чтобы у нас были более тайп-сейф параметры. Для хаскеля есть библиотека по работе с такими файлами.
Сама дока по dhall: https://dhall-lang.org