Каждый пункт 10 баллов, частичная реализация пункта 5 баллов.
Базовая реализация
- В README.md должно быть описано, как можно запустить программу из командной строки, описаны аргументы, которые можно передать приложению.
- Если переданы все аргументы, приложение читает из файла и записывает в файл зашифрованный/расшифрованный текст, при этом предыдущие записи не удаляются.
action (-a, --action)
encode
иdecode
работают в соответствии с описанными в задаче примерами.- Если не переданы обязательные аргументы, приложение передает соответствующее сообщение в
process.stderr
и прoцесс завершается с кодом, отличным от 0. - Если переданы аргументы с путями к файлам, но файлы отсутствуют (или к ним невозможен доступ), приложение передает соответствующее сообщение в
process.stderr
и прoцесс завершается с кодом, отличным от 0. - Если не передан аргумент с путем до файла на чтение, то чтение осуществляется из
process.stdin
. - Если не передан аргумент с путем до файла на запись, то вывод осуществляется в
process.stdout
. - Шифруются/дешифруются только латинские буквы, регистр сохраняется, остальные символы не изменяются.
- Если текст вводится из консоли, то программа не должна завершаться после выполнения шифровки/дешифровки введенного текста, т.е. должна быть возможность ввести еще текст.
- Кодовая база не находится в одном файле, а разделена на файлы в соответствии с выполняемыми задачами (например - функция, преобразующая строку, в отдельном файле, код, создающий transform стрим, в отдельном файле, функция для парсинга и валидации аргументов в отдельном файле и т.п.).
- Поддерживаются значения
shift (-s, --shift)
большие, чем длина алфавита (в этом случае алфавит проходится циклически).
Продвинутая реализация
- Поддерживаются отрицательные значения
shift (-s, --shift)
(в этом случае сдвиг должен осуществляться в обратную сторону).
Штрафы:
- Каждый коммит после дедлайна (за исключением коммитов, изменяющих исключительно README.md либо вспомогательные файлы (
.gitignore
,.prettierrc.json
и т.д.) минус 20 баллов - Запись, чтение, трансформация текста осуществляются без использования потоков (streams) минус 20 баллов
- При изменении порядка аргументов происходит ошибка либо изменяется результат выполнения кода минус 10 баллов
N.B. console.error
пишет ошибку в process.stderr
, большинство библиотек для парсинга параметров при ошибке также пишут в process.stderr
. В VS Code, если запустить приложение в режиме дебага, можно увидеть в панели output, что цвет сообщений, выводимых в process.stdout
и process.stderr
отличаются.