Тестовое задание для прохождения в команду группы разработки решений для защиты индустриальных систем (Санкт-Петербург).
Задание выполнено с помощью C++17 для ОС GNU/Linux (работоспособность на других ОС не исключается, но не гарантируется)
Сборка осуществляется с помощью CMake.
Полученный бинарный файл следует использовать так:
Usage:
./static_site_generator <input> <output>,
where both arguments are paths to directories and output is not a subdirectory of input.
Также есть ключ --help, выводящий usage-информацию.
Логика работы с директориями и файлами реализована в main.cpp с использованием библиотеки std::filesystem (C++17),
реализована обработка ошибок файловой системы и аллокатора. Реализованы проверки на корректность входных данных.
Для элементов разметки созданы классы (markup.h и markup.cpp), описывающие содержимое элемента и позволяющие
представлять элементы в нужном языке разметки (в рамках задания -- HTML, но несложно расширить до других языков).
Разбор разметки происходит простейшим парсером (gemtext.h и gemtext.cpp), который возвращает нужный элемент
разметки. Это позволяет при надобности хранить структуру файла (в задании -- не требуется). Первичное разбиение
на элементы происходит также в main.cpp.