courses-task-checks ===================
npm install @htmlacademy/courses-task-checkscourses-task-checks
===================
Модуль экспортирует функцию createTaskChecker() и объект Logger.
Использование createTaskChecker()
---------------------------------
Функция createTaskChecker() принимает один параметр, объект с ключами:
* bin, содержит объект {compare: '/usr/bin/compare'}, где значение ключа compare указывает на расположение утилиты командной строки compare
* checks, содержит объект с ключами:
* baseDir — каталог в котором будут расположены закешированные данные
* storeFileName — как правило, содержит значение result.json, имя файла, куда будет сохранён результат
* cacheFileName — как правило, содержит значение cache.json, имя файла-метки
* baseUrl — базовый url для вычисления адресов картинок в испытаниях
* logCliDir — каталог, в котором будут сохраняться логи серверных проверок. Если значение не передано, будет использоваться ./log/cli
* debug — по умолчанию имеет значение Logger.ERROR, управляет тем, что будет выводиться в лог. Чтобы изменить это значение, нужно проимпортировать объект Logger
Функция возвращает другую функцию, которая принимает на вход два параметра.
Первый параметр — объект с ключами:
* type — тип задания (html-css, html-css-challenge и т.д.)
* solutionOnly — используется для случаев, когда нужно получить только картинку с образцом для испытания
* code — код, приходящий от клиента. Это объект, имеющий ключи html, css, js и svg (от одного до трёх) со строковыми значениями (если solutionOnly имеет значение true, не нужен)
* goals — состояние целей, полученные с клиента. Для каждой цели приходит объект с ключом status и одним из значений: created, solved или answered (если solutionOnly имеет значение true, не нужен)
* solution — код решения задания. Присутствует не во всех типах заданий, может быть html или js кодом
* location — объект, который может быть передан из запускающей программы. Может содержать ключи:
* dir — каталог, в котором будут сохраняться файлы
* resultJson — путь к файлу, в который будет сохраняться результат (если файл не указан, предполагается, что сохранять его на диск не нужно)
* cacheJson — путь к файлу, в который будет сохраняться отметка о запуске проверки
* baseUrl — базовый путь, начиная от которого будут сохраняться картинки для испытаний
* url — url, по которому можно будет получить результат
В случае, если ключ location не передан, каталог для сохранения данных вычисляется на основе checks.baseDir и md5-суммы полученного кода. В этом случае считается, что файлы result.json и cache.json нужно сохранять.
В случае, если ключ solutionOnly имеет значение true, достаточно передать type (или task.type) — тип задания и solution.
Второй параметр — колбэк, в который передаётся два параметра:
* Первый — текст ошибки, если она случилась
* Второй — результат проверки