Генератор файлов из шаблона
Исполняемый файл genfile
genfile.py [-h] [-r [result]] [-e [env]] template
-h справка
-r директория для сохранения сгенерированных файлов. Если не указывать сохранит в директорию artifacts
-e переменные для шаблона. Можно передавать файл в формате YAML или как параметры командной строки в формате json. Если аргумент не указан, тогда программа будет искать в директории templates/ файл формата name_template.env. Если файл не будет найден тогда файл будет создан из шаблона без переменных
template путь до файла шаблона, либо имя шаблона расположенного в папке templates.
Пусть файл шаблона расположен в директории source/template/example_1.template, переменные для шаблона source/template/example_1.template.env, относительно genfile.py
python genfile.py example_2.txt
Найдёт example_2.txt в директории source/template/, найдёт файл с переменными example_1.template.env в той же директории и сгенерирует файлы в директорию по умолчанию artifacts
python genfile.py -e source/template/universal_env example_2.txt
Найдёт example_2.txt в директории source/template/, найдёт файл с переменными source/template/universal_env и сгенерирует файлы в директорию по умолчанию artifacts
python genfile.py -e source/template/universal_env -r /tmp/test/ /tmp/example_2.txt
Найдет файл с переменными по пути source/template/universal_env, найдет шаблон по пути /tmp/example_2.txt и сгенерирует фалы а дирректорию /tmp/test/
python genfile.py "-e{\$main\$:{\$result_file\$: example_2.txt, \$range\$: {1: {site: www.example, admin_panel: admin.example}}}}" -r/home/milkyway/tmp /home/milkyway/Templates/example_2.txt
Найдёт example_2.txt в директории /home/milkyway/Templates/, переменные получит из аргумента -e и сгенерирует файлы в директорию /home/milkyway/tmp.
$main$:
$default$:
$result_file$: example_default_$i$.txt
site: www.example_default.com
admin_panel: admin.example_default.com
$range$:
1..5 10:
$result_file$: example_from_admin_config_$i$.txt
site: www.example_$i$
admin_panel: admin.example
20..30:
$result_file$: example_config_$i$.txt
site: www.example_$i$
admin_panel: admin.example
shop: shop.example
31:
shop: shop.example
admin_panel: admin.example_shop.com
всё что внутри диапазонов ('1..5 10' и '20..30') является переменными которые используются в шаблоне
name_variable: value
name_variable_1:
name_variable_2: value
В шаблоне переменная будет обозначаться как {{name_variable}}
Также поддерживается вложенность которая обозначается как {{name_variable_1.name_variable_2}}
"-e{\$main\$:{\$result_file\$: example_2.txt, \$range\$: {1: {site: www.example, admin_panel: admin.example}}}}"
-e - аргумент
$ - необходимо экранировать символом \
{} - начало и конец любого блока
{
\$main\$:
{
\$result_file\$: example_2.txt,
\$range\$:
{
1:
{
site: www.example, admin_panel: admin.example}
}
}
}
#аналогичный пример в формате YAML
$main$:
$result_file$: example_2.txt
$range$:
1:
site: www.example
admin_panel: admin.example
# example{{i}}
- {{site}}.ru CNAME 188.188.188.188
- {{admin_panel}}{{i}}.ru CNAME {{site}}.ru.
{% if shop %}
- {{shop}}_{{i}}.ru CNAME {{site}}.ru
{% endif %}
! ! ! РАБОТАЕТ ТОЛЬКО НА PYTHON 3.Х ! ! !