Skip to content

Latest commit

 

History

History
 
 

hw07_file_copying

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Домашнее задание №7 «Утилита для копирования файлов»

Необходимо реализовать утилиту копирования файлов (упрощенный аналог dd).

Тулза должна принимать следующие аргументы:

  • путь к исходному файлу (-from);
  • путь к копии (-to);
  • отступ в источнике (-offset), по умолчанию - 0;
  • количество копируемых байт (-limit), по умолчанию - 0 (весь файл из -from).

Особенности:

  • offset больше, чем размер файла - невалидная ситуация;
  • limit больше, чем размер файла - валидная ситуация, копируется исходный файл до его EOF;
  • программа может НЕ обрабатывать файлы, у которых неизвестна длина (например, /dev/urandom);

Также необходимо выводить в консоль прогресс копирования в процентах (%), допускается использовать для этого стороннюю библиотеку.

Юнит-тесты могут использовать файлы из testdata (разрешено добавить свои, но запрещено удалять имеющиеся) и должны чистить за собой создаваемые файлы (или работать в /tmp).

При необходимости можно выделять дополнительные функции / ошибки.

(*) Дополнительное задание: реализовать прогресс-бар самостоятельно.

Критерии оценки

  • Пайплайн зелёный - 4 балла
  • Добавлены юнит-тесты - до 4 баллов
  • Понятность и чистота кода - до 2 баллов
  • Дополнительное задание на баллы не влияет

Зачёт от 7 баллов

Подсказки

  • github.com/cheggaaa/pb
  • os.OpenFile, os.Create, os.FileMode
  • io.CopyN
  • ioutil.TempFile