Skip to content

Latest commit

 

History

History
34 lines (29 loc) · 5.69 KB

ciphering-cli-tool.md

File metadata and controls

34 lines (29 loc) · 5.69 KB

Ciphering CLI Tool

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

  1. В README.md должно быть описано, как можно запустить программу из командной строки, описаны аргументы, которые можно передать приложению плюс 10 баллов.
  2. Если переданы все аргументы и они корректны, приложение читает из файла и записывает в файл преобразованный текст, при этом предыдущие записи не удаляются плюс 20 баллов
  3. Приложение работает в соответствии с описанными в задании примерами плюс 30 баллов
  4. Если аргументы input и/или output ведут к несуществующему файлу либо директории,приложение передает соответствующее сообщение в process.stderr и прoцесс завершается с кодом, отличным от 0 плюс 10 баллов
  5. Если любой из аргументов дублируется, приложение передает соответствующее сообщение в process.stderr и прoцесс завершается с кодом, отличным от 0 плюс 10 баллов
  6. Если config невалиден или отсутствует, приложение передает соответствующее сообщение в process.stderr и прoцесс завершается с кодом, отличным от 0 плюс 20 баллов. Объем валидации config:
    • проверяется, что config имеет формат {XY(-)}n
    • проверяется, что X соответствует одному из шифров
    • проверяется, что для ROT-8 и Цезаря присутствует элемент Y
    • проверяется, что для Атбаш отсутствует элемент Y
    • проверяется, что Y — это 1 или 0
  7. Если не передан аргумент с путем до файла на чтение, то чтение осуществляется из process.stdin плюс 10 баллов
  8. Если не передан аргумент с путем до файла на запись, то вывод осуществляется в process.stdout плюс 10 баллов
  9. Шифруются/дешифруются только латинские буквы, регистр сохраняется, остальные символы не изменяются плюс 20 баллов
  10. Если текст вводится из консоли, то программа не должна завершаться после выполнения шифровки/дешифровки введенного текста, т.е. должна быть возможность ввести еще текст плюс 10 баллов
  11. Кодовая база не находится в одном файле, а разделена на файлы в соответствии с выполняемыми задачами (например - функция, преобразующая строку, в отдельном файле, код, создающий transform стрим, в отдельном файле, функция для парсинга и валидации аргументов в отдельном файле и т.п.) плюс 10 баллов

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

  1. Чтение реализовано при помощи кастомного стрима (класс, отнаследованный от Readable) плюс 10 баллов
  2. Запись реализована при помощи кастомного стрима (класс, отнаследованный от Writable) плюс 10 баллов
  3. Для передачи сообщения в 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 отличаются.