Skip to content

Zibx/MORJ

Repository files navigation

MORJ — Автоматический пожиратель пуллреквестов!1!!11

Для корректного пожирания пуллреквестов необходимо склонировать данный репозиторий и проинсталлировать Node.js.

В коде используется await, потому пусть нода будет посвежее.

Потом

npm i

или

yarn i

Для поджирания обновлений достаточно выполнить:

node morj

Для последующей генерации результирующей таблицы:

node normalize

WARN

У гитхаба есть лимит на число запросов. (60 в час). Если будет не хватать — реализую авторизацию по токену

Принцип работы

Кравля
  1. МОРЖ запрашивает страницы пулл реквестов из апи и сохраняет полученные данные в папку pulls.
  2. МОРЖ читает каталог pulls перед запросами, а в нём читает файлы. Если в файле меньше 30 пулл-реквестов, то файл будет перезапрошен из API.
  3. Собрав все пулл реквесты с МОРЖа слетела шляпа и ОНа начинает запрашивать диффы по по примерно такому адресу: https://patch-diff.githubusercontent.com/raw/developers-against-repressions/case-212/pull/231.diff
  4. Диффы сохраняются в директорию diffs. Если дифф уже есть, то он не будет запрошен снова.
Нормализация
  1. Читаем все файлы из каталога diffs и директории pulls
  2. Сдабриваем диффы датой из информации об этом диффе из пулла
  3. Ищем строки начинающиеся с плюсика. Но чтоб он был один.
  4. В строке должна быть вертикальная палка
  5. Если взять кусок за или после этой палки и отбросить из него все символы кроме алфавитных — должно хоть что-то остаться
  6. Фамилией не должна быть «Фамилия»
  7. Данные складываем в хэш-объект чтоб исключить дубликаты. Попутно если обнаруживаем что такое Имя уже было, а должность отличается — пишем об этом в консоль. В итоговом варианте используется последний вариант (по id реквеста)
  8. Разуплотняем хэщ в массив и сортируем его по дате.
  9. Вычисляем максимальный размер ФИО и Информации и занимаемся аски артом
  10. Сохраняем полученную таблицу в файл out.md в исходной папке

Releases

No releases published

Packages

No packages published