Базовая реализация
- В
README.md
должно быть описано, как можно запустить программу из командной строки, описаны аргументы, которые можно передать приложению плюс 10 баллов. - Если переданы все аргументы и они корректны, приложение читает из файла и записывает в файл преобразованный текст, при этом предыдущие записи не удаляются плюс 20 баллов
- Приложение работает в соответствии с описанными в задании примерами плюс 30 баллов
- Если аргументы
input
и/илиoutput
ведут к несуществующему файлу либо директории,приложение передает соответствующее сообщение вprocess.stderr
и прoцесс завершается с кодом, отличным от 0 плюс 10 баллов - Если любой из аргументов дублируется, приложение передает соответствующее сообщение в
process.stderr
и прoцесс завершается с кодом, отличным от 0 плюс 10 баллов - Если
config
невалиден или отсутствует, приложение передает соответствующее сообщение вprocess.stderr
и прoцесс завершается с кодом, отличным от 0 плюс 20 баллов. Объем валидацииconfig
:- проверяется, что
config
имеет формат{XY(-)}n
- проверяется, что
X
соответствует одному из шифров - проверяется, что для ROT-8 и Цезаря присутствует элемент
Y
- проверяется, что для Атбаш отсутствует элемент
Y
- проверяется, что
Y
— это 1 или 0
- проверяется, что
- Если не передан аргумент с путем до файла на чтение, то чтение осуществляется из
process.stdin
плюс 10 баллов - Если не передан аргумент с путем до файла на запись, то вывод осуществляется в
process.stdout
плюс 10 баллов - Шифруются/дешифруются только латинские буквы, регистр сохраняется, остальные символы не изменяются плюс 20 баллов
- Если текст вводится из консоли, то программа не должна завершаться после выполнения шифровки/дешифровки введенного текста, т.е. должна быть возможность ввести еще текст плюс 10 баллов
- Кодовая база не находится в одном файле, а разделена на файлы в соответствии с выполняемыми задачами (например - функция, преобразующая строку, в отдельном файле, код, создающий transform стрим, в отдельном файле, функция для парсинга и валидации аргументов в отдельном файле и т.п.) плюс 10 баллов
Продвинутая реализация
- Чтение реализовано при помощи кастомного стрима (класс, отнаследованный от Readable) плюс 10 баллов
- Запись реализована при помощи кастомного стрима (класс, отнаследованный от Writable) плюс 10 баллов
- Для передачи сообщения в
process.stderr
используютсяпользовательские ошибки
и их обработка плюс 10 баллов
Штрафы:
- Наличие коммитов после дедлайна (за исключением коммитов, изменяющих исключительно
Readme.md
либо вспомогательные файлы (.gitignore
,.prettierrc.json
и т.д.) минус 30% от максимального балла за задание (для этого задания 57 баллов) - Использование любых сторонних пакетов, библиотек, фреймворков (за исключением
nodemon
,prettier
и его плагинов,eslint
и его плагинов) минус 150 баллов - Запись, чтение, трансформация текста осуществляются без использования потоков (streams) минус 150 баллов
- При изменении порядка аргументов происходит ошибка либо изменяется результат выполнения кода минус 30 баллов
N.B. console.error
пишет ошибку в process.stderr
. В VS Code, если запустить приложение в режиме дебага, можно увидеть в панели output, что цвет сообщений, выводимых в process.stdout
и process.stderr
отличаются.