* Pavel Wolneykien <manowar-u2l5PoMzF/Vg9hUCZPvPmw@> [090410 14:03]:
>   P.S. К разработке собирался присоединиться raorn@, и грозился
> переписать всё это на некоем libshell. Так что если кто-то ещё захочет
> сделать это, просьба сперва связаться с ним.
[не знаю, дойдёт или нет, пишу из горящего танк^W^W^Wчерез gmane]

Я его переписал чуть менее, чем полностью.  В общем оно сейчас
тупое как валенок.

Сканируется каталог шаблона.  Если нашли каталог, а в этом
каталоге только файлы - это шаблон файла и идём его генерировать.
Если нашли каталог, в котором тоже есть каталоги, обрабатваем его
рекурсивно.  Если нашли что-то ещё - с громкими криками его
пропускаем.

Для генерации файла из шаблона генерится скрипт.  Сначала пишется
шапка

CATERVA_VERBOSE=${verbose:+1}
CATERVA_TEMPLATE="$(quote_shell "$template")"

Потом разбираются non-option arguments переданные самой катерве и
если они в виде NAME=VALUE, то они тоже записываются в скрипт в
виде

ARG_NAME="VALUE"

Дальше, для каждого кусочка темплейта генерится либо команда "cat
имяфала", либо ". имяфайла" (последнее в случае если "кусочек"
исполняемый).

Рядом с генерируемым файлом создаётся временный.  Запускается
сгенерированный скрипт, его вывод перенаправляется во временный
файл.  Если генерируемый файл существовал, делается chown/chmod
--reference, потом mv временного файла в генерируемый (при этом
mv можно передать опции --backup и --suffix).

Вот эта схема решает задачу передачи каких-то данных в
скрипты-шаблончики и обмена данными между самими
скриптами-шаблончиками.

-- 
Regards,
Sir Raorn.

Attachment: signature.asc
Description: Digital signature

_______________________________________________
devel-conf mailing list
devel-conf@lists.altlinux.org
https://lists.altlinux.org/mailman/listinfo/devel-conf

Ответить