unpack_string/hw07_file_copying/README.md

38 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Домашнее задание №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`
- `os.CreateTemp`