[gitfame] Update readme.

This commit is contained in:
Arseny Balobanov 2021-03-02 00:17:33 +03:00
parent 69d2aa7212
commit 269e262e8a

View file

@ -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 Ross Light,2,1,1
ferhat elmas,1,1,1 ferhat elmas,1,1,1
``` ```
[encoding/csv](https://golang.org/pkg/encoding/csv/)
`json`: `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}] [{"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`: `json-lines`:
``` ```
@ -83,15 +97,15 @@ ferhat elmas,1,1,1
**--extensions** — список расширений, сужающий список файлов в расчёте; множество ограничений разделяется запятыми, например, `'.go,.md'` **--extensions** — список расширений, сужающий список файлов в расчёте; множество ограничений разделяется запятыми, например, `'.go,.md'`
**--languages** — список языков (программирования, разметки и др.), сужающий список файлов в расчёте; множество ограничений разделяется запятыми например `'go,markdown'` **--languages** — список языков (программирования, разметки и др.), сужающий список файлов в расчёте; множество ограничений разделяется запятыми, например `'go,markdown'`
Принадлежность файла к языку программирования определяется с помощью его расширения. Принадлежность файла к языку программирования определяется с помощью его расширения.
В [configs/language_extensions.json](configs/language_extensions.json) лежит маппинг. В [configs/language_extensions.json](configs/language_extensions.json) лежит маппинг.
Неизвестные языки никаких ограничений не накладывают. При их использовании можно написать warning в stderr. Неизвестные языки никаких ограничений не накладывают. При их использовании можно написать 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.