github-release-notifier 0.4.5
Get notified when a specific package got a new release on Github
License: MIT
Requires Python: >=3

.. image:: https://github.com/femtopixel/github-release-notifier/raw/master/logo.png

=======================
Github Release Notifier
=======================

.. image:: https://img.shields.io/github/release/femtopixel/github-release-notifier.svg
    :alt: latest release
    :target: http://github.com/femtopixel/github-release-notifier/releases
.. image:: https://img.shields.io/pypi/v/github-release-notifier.svg
    :alt: latest release
    :target: https://pypi.org/project/github-release-notifier/
.. image:: https://img.shields.io/docker/pulls/femtopixel/github-release-notifier.svg
    :alt: Docker pull
    :target: https://hub.docker.com/r/femtopixel/github-release-notifier/
.. image:: https://img.shields.io/docker/stars/femtopixel/github-release-notifier.svg
    :alt: Docker stars
    :target: https://hub.docker.com/r/femtopixel/github-release-notifier/
.. image:: https://github.com/jaymoulin/jaymoulin.github.io/raw/master/btc.png
    :alt: Bitcoin donation
    :target: https://m.freewallet.org/id/374ad82e/btc
.. image:: https://github.com/jaymoulin/jaymoulin.github.io/raw/master/ltc.png
    :alt: Litecoin donation
    :target: https://m.freewallet.org/id/374ad82e/ltc
.. image:: https://github.com/jaymoulin/jaymoulin.github.io/raw/master/ppl.png
    :alt: PayPal donation
    :target: https://www.paypal.me/jaymoulin
.. image:: https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png
    :alt: Buy me a coffee
    :target: https://www.buymeacoffee.com/3Yu8ajd7W


This program will allow you to be notified of Github new releases

Installation
------------

.. code::

    pip3 install github-release-notifier

Usage
-----

.. code::

    usage: github-release-notifier [-h] [--action {cron,subscribe,unsubscribe}] [--package PACKAGE]
                  [--webhook WEBHOOK] [--uuid UUID]

    optional arguments:
      -h, --help            show this help message and exit
      --action {cron,subscribe,unsubscribe}, -a {cron,subscribe,unsubscribe}
                            Action to do (default: cron)
      --package PACKAGE, -p PACKAGE
                            Github package name / url (required for
                            subscribe/unsubscribe) - prints uuid on subscription
      --webhook WEBHOOK, -w WEBHOOK
                            URL to your webhook (required for
                            subscribe/unsubscribe)
      --uuid UUID, -u UUID  UUID of your webhook (required for unsubscribe)

Example
~~~~~~~

First, I register my webhook :

.. code::

    github-release-notifier --action subscribe --webhook https://example.com/updated --package jaymoulin/google-music-manager

an UUID is printed. this UUID will be required to unsubscribe the webhook.

When `jaymoulin/google-music-manager` releases a new version, `https://example.com/updated` will be called with HTTP method `POST` and body, a JSON like this :

.. code::

    {
        "date": [2017, 11, 13, 19, 46, 35, 0, 317, 0],
        "version": "0.7.2",
        "title": "Fixes split modules",
        "content": "",
        "media": "https://avatars0.githubusercontent.com/u/14236493?s=60&v=4",
        "author": "jaymoulin"
        "package_name": "jaymoulin/google-music-manager"
    }

For this to happen, the system should check if a new version have been released.
We can do that by calling `github-release-notifier` without any parameter or setting `--action` to `cron` (which is default).

To automate this process, we could add this process in a cronjob:

.. code::

    (crontab -l ; echo "0 0 * * * github-release-notifier") | sort - | uniq - | crontab -

This will check every day at midnight if new versions have been released.

Configuration
-------------

Environment variables can be defined to change default `hooks` or `versions` database files (plain json file)

.. code::

    GRN_VERSIONS_FILE: Path to saved versions (default: ${HOME}/.github_release_notifier/versions)
    GRN_HOOKS_FILE: Path to hooks configuration (default: ${HOME}/.github_release_notifier/hooks)

Docker Usage
------------

First run the daemon

.. code::

    docker run --name GRN -d femtopixel/github-release-notifier

you can mount a volume to `/root/.github_release_notifier/` to keep tracks of webhooks and versions

example:

.. code::

    docker run --name GRN -d -v /path/to/your/saves:/root/.github_release_notifier/ femtopixel/github-release-notifier

Then register your webhook :

.. code::

    docker exec GRN -a subscribe -p jaymoulin/google-music-manager -w https://example.com/updated


Submitting bugs and feature requests
------------------------------------

Bugs and feature request are tracked on GitHub

Author
------

Jay MOULIN jaymoulin+github-release-notifier@gmail.com See also the list of contributors which participated in this program.

License
-------

Github Release Notifier is licensed under the MIT License