LINUX.ORG.RU

commandline template engine

 ,


0

1

Внезапно появилась задача генерировать кучу текстовых фалов из заготовок.
Т.е. на входе файл вида:

...
Some text 
Another text {{VAR1}} {{VAR2}}
Some text
...

И есть значения переменных которые надо подставить в шаблон.

Хотелось бы какую-нибудь программку которая бы это обеспечивала обработку такого шаблона по типу:
programm --template myfile.tmpl -vVAR1=value1 -vVAR2=value2 >out.txt


Т.е. нужен какой-то простенький шаблонизатор для командной строки.

Несколько лет назад я находил подобную программку, но вот склероз не даёт её вспомнить.

Да, про sed я знаю и текущий вариант на нём сделан, но костыли вышли кривые и неудобные.

UPD таки победив свой склероз, я нашёл то что мне нужно.
И ответ на мой вопрос был 'GNU autogen'.

★★★★★

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

xml+xslt классика (там возможна валидация - как в ebuild), но если шаблоны простые, то на любом удобном языке поиск и замена.

Для таких систем как npm, composer, pip наверняка найдутся интересные готовые решения.

anonymous
()
Ответ на: комментарий от WatchCat

И что, что это сед? Тебе надо заменить одну строку на другую, сед с этим справляется. В чём проблема? Завернуть аргументы в скрипте?

crutch_master ★★★★★
()
Ответ на: комментарий от crutch_master

А в том что костыли всегда остаются костылями - колченогими и неудобными.

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

Честно признаюсь, как-то я его не осилил.
Он мне показался слишком уж из пушки по воробьям.

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

Знаю про такой вариант, но не подходит, т.к. шаблоны во внешних файлах.

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

говно же полное

Это говно есть везде и работает

ioway
()
Ответ на: комментарий от WatchCat

Вообще я себе для похожей задачи слепила скрипт-обертку для jinja в каком-то таком виде

https://gist.github.com/bookwar/fa0368fb7c5376c78a4e6ddaba7fe75f

Берет yaml-файлы, и для каждого рендерит шаблоны.

Потому что это ты по началу обходишься простой logic-less заменой переменных, а потом оказывается что очень нужен фильтр типа

{{ value | default('None')}}
и т.п.

И приходишь к полноценному template engine.

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

m4 оказался не нужен, т.к. есть GNU autogen
А вот его почему-то никто не указал, хотя именно для этого он и разрабатывался.
Плохо народ знает что есть в GNU utilities. Ограничивают себя coreutils а потом придумывают велосипеды.

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