Skip to content

Latest commit

 

History

History
27 lines (21 loc) · 4.46 KB

caesar-cipher-cli-tool.md

File metadata and controls

27 lines (21 loc) · 4.46 KB

Caesar cipher CLI tool

Каждый пункт 10 баллов, частичная реализация пункта 5 баллов.

Базовая реализация

  1. В README.md должно быть описано, как можно запустить программу из командной строки, описаны аргументы, которые можно передать приложению.
  2. Если переданы все аргументы, приложение читает из файла и записывает в файл зашифрованный/расшифрованный текст, при этом предыдущие записи не удаляются.
  3. action (-a, --action) encode и decode работают в соответствии с описанными в задаче примерами.
  4. Если не переданы обязательные аргументы, приложение передает соответствующее сообщение в process.stderr и прoцесс завершается с кодом, отличным от 0.
  5. Если переданы аргументы с путями к файлам, но файлы отсутствуют (или к ним невозможен доступ), приложение передает соответствующее сообщение в process.stderr и прoцесс завершается с кодом, отличным от 0.
  6. Если не передан аргумент с путем до файла на чтение, то чтение осуществляется из process.stdin.
  7. Если не передан аргумент с путем до файла на запись, то вывод осуществляется в process.stdout.
  8. Шифруются/дешифруются только латинские буквы, регистр сохраняется, остальные символы не изменяются.
  9. Если текст вводится из консоли, то программа не должна завершаться после выполнения шифровки/дешифровки введенного текста, т.е. должна быть возможность ввести еще текст.
  10. Кодовая база не находится в одном файле, а разделена на файлы в соответствии с выполняемыми задачами (например - функция, преобразующая строку, в отдельном файле, код, создающий transform стрим, в отдельном файле, функция для парсинга и валидации аргументов в отдельном файле и т.п.).
  11. Поддерживаются значения shift (-s, --shift) большие, чем длина алфавита (в этом случае алфавит проходится циклически).

Продвинутая реализация

  1. Поддерживаются отрицательные значения 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 отличаются.