Простая и надёжная утилита командной строки для подстановки значений переменных в текстовый шаблон.
Предназначена для автоматического формирования документов, конфигурационных файлов, писем и других текстовых данных.
- Подстановка значений в метки вида
{{ переменная }} - Чтение данных из файла в формате
КЛЮЧ=ЗНАЧЕНИЕ - Поддержка комментариев в файле данных (
#и//) - Игнорирование лишних пробелов вокруг имён переменных и знака
= - Гибкая обработка повторяющихся ключей (последнее значение имеет приоритет)
- Настраиваемый путь к выходному файлу или вывод в стандартный поток
- Понятные коды ошибок для интеграции в скрипты
generator --template=ФАЙЛ_ШАБЛОНА --data=ФАЙЛ_ДАННЫХ [--output=ВЫХОДНОЙ_ФАЙЛ]
text
| Короткий | Длинный | Обязательный | Описание |
|---|---|---|---|
-t |
--template=путь |
✅ | Путь к файлу шаблона |
-d |
--data=путь |
✅ | Путь к файлу с данными |
-o |
--output=путь |
❌ | Путь к выходному файлу (если не указан – вывод в stdout) |
Обычный текстовый файл, содержащий метки подстановки в двойных фигурных скобках: Привет, {{ name }}! Ваш заказ №{{ order_id }} готов.
text
Пробелы внутри скобок по краям имени игнорируются.
Каждая строка содержит одну переменную в формате КЛЮЧ=ЗНАЧЕНИЕ.
Пробелы вокруг = и в начале/конце строки не учитываются.
Строки, начинающиеся с # или //, считаются комментариями и пропускаются.
Допустимые символы: латиница, цифры, подчёркивание.
Ограничения: ключ и значение – одиночные слова, длина не более 100 символов, количество пар не более 1024.
Пример: name=Иван order_id=12345
это комментарий // тоже комментарий
text
При повторном определении ключа последнее значение заменяет предыдущее.
| Код | Значение |
|---|---|
| 0 | Успешное завершение |
| 1 | В шаблоне присутствует метка, для которой нет значения в данных |
| 2 | Ошибка в аргументах командной строки (отсутствуют обязательные параметры, неверный формат) |
| 3 | Ошибка ввода-вывода (не удалось открыть/прочитать/записать файл) |
| 4 | Синтаксическая ошибка в шаблоне (незакрытая метка, некорректные фигурные скобки) |
| 5 | Прочие ошибки |
Шаблон (template.txt):
Уважаемый(ая) {{ user }}!
Ваша заявка №{{ ticket_id }} принята. Спасибо, что пользуетесь нашим сервисом.
text
Данные (data.dat):
user=Мария
ticket_id=98765
text
Команда: generator -t template.txt -d data.dat -o output.txt
text
Результат (output.txt):
Уважаемый(ая) Мария!
Ваша заявка №98765 принята. Спасибо, что пользуетесь нашим сервисом.
text
Для компиляции достаточно стандартного C++ компилятора. Проект использует только стандартную библиотеку C++.
g++ -std=c++17 -o generator main.cpp