|
|
||
|---|---|---|
| .. | ||
| testdata | ||
| .sync | ||
| README.md | ||
| copy.go | ||
| copy_test.go | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| test.sh | ||
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/pbos.OpenFile,os.Create,os.FileModeio.CopyNos.CreateTemp