Golang_HomeWork/hw07_file_copying
Andrey Ivanov 8369c9259d HW7 is completed 2020-08-04 16:12:38 +03:00
..
testdata Initial commit 2020-05-26 21:16:56 +03:00
README.md Initial commit 2020-05-26 21:16:56 +03:00
copy.go HW7 is completed 2020-08-04 16:12:38 +03:00
copy_test.go HW7 is completed 2020-08-04 16:01:38 +03:00
go.mod HW7 is completed 2020-08-04 16:01:38 +03:00
go.sum HW7 is completed 2020-08-04 16:01:38 +03:00
main.go HW7 is completed 2020-08-04 16:01:38 +03:00
test.sh Initial commit 2020-05-26 21:16:56 +03:00

README.md

Домашнее задание №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