A daemon process that listens for new issues in Github repositories and notifies about them via email.
I run this in a Raspberry Pi 4 🫐 and use it to monitor Open Source repos that I like to contribute to.
docker(but not really, you could also compile the binary)make(but not really, you can just check the contents of theMakefileand usedockerdirectly)go 1.21+(but not really, only if you decide not to usedocker)
This is intended to be used as a Docker container, although it could also be compiled and run as a standalone Go binary using something like systemd.
- Clone this repository
$ git clone https://github.com/yugarinn/github-issues-notifier- Change to the notifier folder and execute the run command
$ cd github-issues-notifier
$ make runIt is also possible to:
- Check the logs:
$ make logs- Stop the service
$ make stopThe notifier relies on a yml file to define which repositories it should listen to. This is an example configuration file:
listeners:
- name: 'lila'
repository: 'lichess-org/lila'
email_to: 'address@mail.com'
is_active: true
filters:
labels: 'good first issue'
assignee: 'none'
- name: 'doom'
repository: 'doomemacs/doomemacs'
email_to: 'address@mail.com'
is_active: true
filters:
labels: 'good first issue,help wanted'
- name: 'rails'
repository: 'rails/rails'
email_to: 'address@mail.com'
is_active: true
filters:
labels: 'good first issue,help wanted'Each listener is composed of:
- Its name.
- The repository it should listen to in the
owner/repositoryformat. - The email to send the notification to.
- An active flag.
- A filters list.
Only the issues that match the defined filters in each listener are taken into account. Also, keep in mind that just label filters are implemented.
Since you need to bring your own SMTP server, the following variables MUST be defined in a .env file in the root folder of the project:
SMTP_HOSTSMTP_PORTSMTP_EMAIL_FROMSMTP_PASSWORD
The following variables are optional:
WORKER_CRON_FREQUENCYdefaults to"*/30 * * * *"(at every 30th minute)LISTENERS_FILE_PATHWhere the configuration file defining the listeners is located. Defaults to"./listeners.yml".LISTENERS_DATABASE_PATHWhere the database file (this usesbboltunder the hood) is located. This database is needed jsut to keep track of the already notified issues, nothing fancy really. Defaults to"./listener.db"
Just open a PR!