Идеальный формат конфигов *
* лично для меня
В общем, случилось и на неделе я таки присвоил тег v1 для своей самописной Go библиотеки для разбора конфигов! Но обо всём по порядку. Или можно пропустить предысторию и сразу перейти к описанию библиотеки.
Предыстория
Около месяца назад я задумался написать небольшую утилиту для себя, которая бы организовывала для меня рабочее окружение. Не важно сейчас, как именно должна была организовывать, а важно, что эта утилита должна бы была иметь весьма разухабистый конфиг вследствие своей планируемой гибкости. И встал вопрос, а какой формат конфигов использовать? Казалось бы, возьми yaml, toml, на худой конец, json (hjson, json5, итп). Даже думал об ini формате! Но всё было не то…
Тернарник в Go
Хотите немного наркомании сахара для Go?

Тернарник в Go
Их есть у меня:
Тернарный оператор для Go на генериках
func If[T any](condition bool, thn T, els T) T {
if condition {
return thn
}
return els
}
Будет настроение — добавлю в свою либку https://neonxp.ru/go/extra , а пока, как-то так держите.
Не стоит использовать в реальном коде. Я лично не вижу никакого оправдания для использования, кроме как покекать.
Jsonnet
Редко такое бывает, что случайно натыкаешься на какую-то технологию и она вызывает вау-эффект и буквально переворачивает всё верх дном. На днях для меня такой технологией стал Jsonnet от Google.

Jsonnet
В кратце, это надмножество JSON являющееся языком описания шаблонов. Пока звучит не очень круто, да? На деле это офигенный Тьюринг полный функциональный язык, результатом выполнения которого будет сформированый JSON (и не только) документ(или несколько документов[^1]). [^1]:https://jsonnet.org/learning/getting_started.html#multi
Если интересно, рекомендую сразу переходить к туториалу — https://jsonnet.org/learning/tutorial.html.