Build Status

Gerd - Github Herder

Declaratively manage your Github estate using gerd.

 Introduction

Gerd is a tool which declaratively manages your GitHub estate. In a nutshell, it will create a metadata file for you which models a GitHub organisation, and will let you make changes to that organisation in the file, which will then be reflected in GitHub.

Currently, the only support is for the creation and deletion of repositories, but new features will be added.

Usage

Installation

Gerd is a Ruby gem. Install it using

$ gem install gerd

Configuration

Gerd needs a GitHub API token to work. You can provide this on the command line

$ gerd -t wpergih3409gihjp2g4brjep
$ gerd --token wpergih3409gihjp2g4brjep

Or as an environment variable

$ export GERD_TOKEN=wpergih3409gihjp2g4brjep

Or in a .gerd file in the local directory

{
  "token": "wpergih3409gihjp2g4brjep"
}

Or in a .gerd file in your home directory.

Gerd will look for a token in these places, in order.

Commands

gerd audit

First steps are to create a snapshot of your organisation

$ gerd audit meet-gerd -f gerd.json

This captures the data in a file which now models your organisation. It will look like this

   {
     "organisation": "meet-gerd",
     "teams": {
     },
     "repositories": {
     },
     "members": {
       "georgecodes": {
         "id": 99999
       }
    }
  }

gerd validate

At any point, you can see if your model file matches reality

$ gerd validate meet-gerd --expected gerd.json

You will get a short report on the recognised differences

gerd sync

This is what will propagate changes in your gerd model to GitHub.

$ gerd sync meet-gerd --file gerd.json

Note that as a layer of protection, destructive behaviour - deleting repos - requires an explicit flag to perform

$ gerd sync meet-gerd --file gerd.json --delete