diff --git a/gitfame/README.md b/gitfame/README.md index 00cca30..fb97a8a 100644 --- a/gitfame/README.md +++ b/gitfame/README.md @@ -33,6 +33,18 @@ f4640df4 (Fedor Korotkiy 2020-02-26 20:28:52 +0000 5) Задача считае Кроме того, этот формат схлопывает соседние строки относящиеся к одному коммиту, что может сильно сократить размер результата. Поэтому использовать нужно его. +Стоит помнить, что не все файлы из директории git проекта обязательно принадлежат git репозиторию. +Получить список файлов git репозитория можно разными способами, например с помощью `git ls-tree`. + +### Интерфейс + +Утилита должна печатать результат в stdout. +При использовании невалидного значения флага или любой другой ошибке программа должна завершаться с ненулевым кодом возврата. + +Расчёт может занимать довольно длительное время. +Хорошим качеством подобной утилиты является отображение прогресса (вынесенное за флаг). +Прогресс можно печатать в stderr в произвольном формате. + ### Флаги Утилита должна поддерживать следующий набор флагов: @@ -68,11 +80,13 @@ Joe Tsai,64,3,2 Ross Light,2,1,1 ferhat elmas,1,1,1 ``` +[encoding/csv](https://golang.org/pkg/encoding/csv/) `json`: ``` [{"name":"Joe Tsai","lines":64,"commits":3,"files":2},{"name":"Ross Light","lines":2,"commits":1,"files":1},{"name":"ferhat elmas","lines":1,"commits":1,"files":1}] ``` +[encoding/json](https://golang.org/pkg/encoding/json/) `json-lines`: ``` @@ -83,15 +97,15 @@ ferhat elmas,1,1,1 **--extensions** — список расширений, сужающий список файлов в расчёте; множество ограничений разделяется запятыми, например, `'.go,.md'` -**--languages** — список языков (программирования, разметки и др.), сужающий список файлов в расчёте; множество ограничений разделяется запятыми например `'go,markdown'` +**--languages** — список языков (программирования, разметки и др.), сужающий список файлов в расчёте; множество ограничений разделяется запятыми, например `'go,markdown'` Принадлежность файла к языку программирования определяется с помощью его расширения. В [configs/language_extensions.json](configs/language_extensions.json) лежит маппинг. Неизвестные языки никаких ограничений не накладывают. При их использовании можно написать warning в stderr. -**--exclude** — набор [Glob](https://en.wikipedia.org/wiki/Glob_(programming)) паттернов, исключающих файлы из расчёта +**--exclude** — набор [Glob](https://en.wikipedia.org/wiki/Glob_(programming)) паттернов, исключающих файлы из расчёта, например `'foo/*,bar/*'` -**--restrict-to** — набор Glob паттернов, исключающий все файлы, не удовлетворяющие ни одному из паттерну из набора +**--restrict-to** — набор Glob паттернов, исключающий все файлы, не удовлетворяющие ни одному из паттернов набора ### Тесты @@ -164,3 +178,7 @@ git clone /path/to/my.bundle . ### Критерии сдачи Решение должно проходить все тесты, так же как и в обычной задаче. + +После прохождения тестов в табличке появится 0. +Нужно успеть отправить решение до дедлайна! +Проверяющие посмотрят на решение и заменят 0 на 1.