All Projects → masterlittle → Prinder

masterlittle / Prinder

Licence: MIT license
Free Pull Request reminder for Github. Has configurations to post reminders to Slack and email along with jinja templating

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to Prinder

Jinja2 Cli
CLI for Jinja2
Stars: ✭ 302 (+1338.1%)
Mutual labels:  yaml, jinja2
gen-cisco
🧨 Generates Cisco scripts based on YAML files
Stars: ✭ 29 (+38.1%)
Mutual labels:  yaml, jinja2
Grow
A declarative website generator designed for high-quality websites, with a focus on easy maintenance and localization.
Stars: ✭ 360 (+1614.29%)
Mutual labels:  yaml, jinja2
gpp
General PreProcessor
Stars: ✭ 25 (+19.05%)
Mutual labels:  jinja2, templating
Zenbu
🏮 A Jinja2 + YAML based config templater.
Stars: ✭ 114 (+442.86%)
Mutual labels:  yaml, jinja2
coAST
Universal and language-independent abstract syntax tree
Stars: ✭ 30 (+42.86%)
Mutual labels:  yaml, jinja2
Yglu
Yglu ᕄ !? - YAML glue for structural templating and processing
Stars: ✭ 51 (+142.86%)
Mutual labels:  yaml, templating
Dotdrop
Save your dotfiles once, deploy them everywhere
Stars: ✭ 813 (+3771.43%)
Mutual labels:  jinja2, templating
Kapitan
Generic templated configuration management for Kubernetes, Terraform and other things
Stars: ✭ 1,383 (+6485.71%)
Mutual labels:  yaml, jinja2
Python Training For Network Engineers
Python hands-on training for network engineers. How to automate Junos with Python
Stars: ✭ 92 (+338.1%)
Mutual labels:  yaml, jinja2
qaz
qaz—A CLI tool for Templating & Managing stacks in AWS Cloudformation
Stars: ✭ 89 (+323.81%)
Mutual labels:  yaml, templating
Genesis
Templating, scaffolding and generation tool
Stars: ✭ 122 (+480.95%)
Mutual labels:  yaml, templating
smacha
SMACHA is a meta-scripting, templating, and code generation engine for rapid prototyping of ROS SMACH state machines.
Stars: ✭ 15 (-28.57%)
Mutual labels:  yaml, jinja2
logya
Logya is a static site generator written in Python designed to be easy to use and flexible.
Stars: ✭ 16 (-23.81%)
Mutual labels:  yaml, jinja2
Askama
Type-safe, compiled Jinja-like templates for Rust
Stars: ✭ 1,255 (+5876.19%)
Mutual labels:  jinja2, templating
Carvel Ytt
YAML templating tool that works on YAML structure instead of text
Stars: ✭ 816 (+3785.71%)
Mutual labels:  yaml, templating
Pynms
A vendor-agnostic NMS for carrier-grade network simulation and automation
Stars: ✭ 73 (+247.62%)
Mutual labels:  yaml, jinja2
Napalm Salt
Modules for event-driven network automation and orchestration using Salt
Stars: ✭ 116 (+452.38%)
Mutual labels:  yaml, jinja2
Home Assistant Config
My Home Assistant Configuration 🏡🏡
Stars: ✭ 133 (+533.33%)
Mutual labels:  yaml, jinja2
pixie
Tiny template functions.
Stars: ✭ 14 (-33.33%)
Mutual labels:  templating

Prinder

Pull Request reminder for Github with numerous configurations and templating feature using the powerful Jinja2

Installation and Configuration

On *nix systems:-

  1. Install Prinder using pip.
pip install prinder
  1. Create a configuration file. The default filename is prinder_config.yaml but you can name it whatever you want. Fill in all the fields or leave them empty if you don't need them. Copy the config template from here - prinder_config.yaml.template

  2. Get a github auth token with relevant access and assign it to the environment variable PRINDER_GITHUB_API_TOKEN or assign it in the configuration file to github_api_token. (Copying the token to the file is not recommended)token

  3. Run the command with the file name as argument if required. If no argument is passed, it will try to find prinder_config.yaml in the working directory. The debug parameter can be passed to turn on detailed logging.

prinder --config_file=<your-configuration-file-path>
eg -
    1. prinder
    2. prinder --config_file=prinder_config.yml
    3. prinder --debug
  1. The logs of the service can be found at prinder.log in the working directory.

Prinder has a number of configurations using which you can configure hooks to Slack or Email. Some important ones are:

  1. organization_name: The organization name for which to get pull requests.
  2. list_of_repos: Provide a list of repos for which to get pending pull requests.
  3. topics: Provide a list of topics attached to repositories for which to get pending pull requests.
  4. ignore_repos: List of repos which should be ignored.
  5. ignore_labels: List of labels assigned to pull requests to be ignored.
  6. slack:post_as_user: The name which will be shown on Slack.
  7. initial_message: The text that will appear at the the top in the notification hooks.

Formatting the notifications

You can set your own look and feel of notifications and override the default using the templating files. The templating uses Jinja2 so everything is highly configurable.

For Slack

  1. Create a template file. You can have a look at slack_template.template which is the default.
  2. Give the path to the template file in your configuration file.

For Mail

  1. Create a template file. You can have a look at mail_template.html which is the default.
  2. Give the path to the template file in your configuration file.

List of available information is :-

  1. Owner
  2. Initial Message
  3. List of pull request object
  4. A dictionary having pull requests with the repository name as the key
  5. time_delta function to calculate the number of days since pull request created

Send pull request reminders to Slack

Get a slack token and assign it to the environment variable PRINDER_SLACK_API_TOKEN or assign it in the configuration file to slack_api_token. (Copying the token to the file is not recommended)

Send pull request reminders in email

Configure a SMTP on your host and provide the details in the configuration file.

CONTRIBUTING

This started as a side project for a requirement that I had and as a way to improve my Python skills. I would warmly welcome any Pull requests and feature requests that you may have. Thanks

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].