Hatnik - это веб проект, позволяющий отслеживать релизы библиотек: хочешь знать, когда зарелизилась новая версия кложурскрипта - настраиваешь действие в хатнике, и при следующем релизе действие будет автоматически выполнено. Изначально была поддержка только посылки емейла. Рад сообщить, что теперь также поддерживается создание гитхаб issue и pull request'а.
Issue
Тут достаточно просто: создаём issue в выбранном репозитории каждый раз, когда релизится библиотека. Можно настраивать репозиторий, название и тело issue. Название и тело поддерживают несколько шаблонных переменных, например "Релиз {{library}} {{version}}" в финале будет выглядеть как "Релиз org.clojure/clojurescript 0.0-2371".
Данный тип действия может быть полезен, например, самим разработчикам библиотек. Обычно во время релиза нужно сделать кучу небольших задач, например обновить вики, туториалы, может провести какое пост-релизное тестирование. И что-нибудь из этого всего легко забыть. Issue могут помочь с этим: для каждой задачи настроить по действию, чтобы при релизе посоздавались issue и потом уже их выполнять. Так же кто-нибудь другой может подхватить и сделать её.
Pull request
Pull request действие может изменять файлы в публичном репозитории и создавать pull request с этими изменениями. Каждая операция на изменение - это простой find-and-replace. Операция состоит из 3 полей: пути к файлу, который нужно изменить, регэкспа того, что нужно заменить и собственно строки замены. Поля регэкспа и замены поддерживают шаблонные переменные, упомянутые ранее.
Pull request может использоваться например для того, чтобы поддерживать зависимости в актуальном состоянии: нужно создать действие, которое будет обновлять версию зависимости X в project.clj
каждый раз, когда X релизится. Особенно удобно, когда параллельно с этим настроен CI (например Travis, который тестирует все входящие pull request'ы: можно просто посмотреть, проходят ли тесты и если да - то смержить. Таким образом нужен всего один клик для обновления зависимости! Ещё один вариант использования полезен для разработчиков библиотек. Обычно в README библиотеки указывается последняя версия библиотеки и пользователь может просто скопировать её в свой project.clj
и сразу начать использовать. Иногда эта версия устаревает, т.к. разработчики просто забывают её обновлять. Тут и может помочь Хатник: нужно настроить действие, которое будет обновлять README. Например я настроил пару действий для Quil, которые обновляют README, примеры использования и lein шаблоны. Вот пример подобного pull request'а. Последнее замечание: если в результате выполнения действия никакие файлы не были изменены (например целевой файл был перемещён или версия в README уже изменена на последнюю), то pull request создан не будет, вместо него Хатник пошлёт емейл, в котором будут описаны причины того, почему ничего не получилось.
TODO
- Импорт билд файлов. На текущий момент Хатник не предоставляет возможности импортировать билд файлы, например
project.clj
. Если проект использует много зависимостей, то создание для каждого из них отдельного действия - занятие достаточно занудное. Поэтому Хатник должен поддерживать импорт билд файлов. - Возможность потыкать Хатника без полного логина. Хатник не должен требовать пользователя залогиниться через гитхаб для того, чтобы посмотреть что Хатник может. Должна быть возможность залогиниться как гость, возможно с ограниченым набором действий.
- Поддержка других языков. На данный момент только мавен-совместимые библиотеки поддерживаются (Java, Clojure, Scala, Groovy). Нужно добавить поддержку других языков.
Участие
Хатник - опен-сорсный проект. Можно взглянуть на репозиторий. Баги и pull request'ы приветствуются!