NAME

   Github::Backup - Back up your Github repositories and/or issues locally

SYNOPSIS

       github_backup \
           --user stevieb9 \
           --token 003e12e0780025889f8da286d89d144323c20c1ff7 \
           --dir /home/steve/github_backup \
           --repos \
           --issues

       # You can store the token in an environment variable as opposed to sending
       # it on the command line

       export GITHUB_TOKEN=003e12e0780025889f8da286d89d144323c20c1ff7

       github_backup -u stevieb9 -d ~/github_backup -r

DESCRIPTION

   The cloud is a wonderful thing, but things do happen. Use this
   distribution to back up all of your Github repositories and/or issues
   to your local machine for both assurance of data accessibility due to
   outage, data loss, or just simply off-line use.

COMMAND LINE USAGE

-u | --user

   Mandatory: Your Github username.

-t | --token

   Mandatory: Your Github API token. If you wish to not include this on
   the command line, you can put the token into the GITHUB_TOKEN
   environment variable.

-d | --dir

   Mandatory: The backup directory where your repositories and/or issues
   will be stored. The format of the directory structure will be as
   follows:

       backup_dir/
           - issues/
               - repo1/
                   - issue_id_x
                   - issue_id_y
               - repo2/
                   - issue_id_a
           - repo1/
               - repository data
           - repo2/
               - repository data

   The repositories are stored as found on Github. The issues are stored
   in JSON format.

-r | --repos

   Optional: Back up all of your repositories found on Github.

   Note that either --repos or --issues must be sent in.

-i | --issues

   Optional: Back up all of your issues across all of your Github
   repositories.

   Note that either --issues or --repos must be sent in.

-p | --proxy

   Optional: Send in a proxy in the format https://proxy.example.com:PORT
   and we'll use this to do our fetching.

-h | --help

   Display the usage information page.

MODULE METHODS

new

   Instantiates and returns a new Github::Backup object.

   Parameters:

 api_user

   Mandatory, String: Your Github username.

 token

   Mandatory, String: Your Github API token. Note that if you do not wish
   to store this in code, you can put it into the GITHUB_TOKEN environment
   variable, and we'll read it in from there instead.

 dir

   Mandatory, String: The directory that you wish to store your downloaded
   Github information to.

 proxy

   Optional, String: Send in a proxy in the format
   https://proxy.example.com:PORT and we'll use this to do our fetching.

repos

   Takes no parameters. Backs up all of your Github repositories, and
   stores them in the specified backup directory.

issues

   Takes no parameters. Backs up all of your Github issues. Stores them
   per-repo within the /backup_dir/issues directory.

FUTURE DIRECTION

   - Slowly, I will add new functionality such as backing up *all* Github
   data, as well as provide the ability to restore to Github the various
   items.

   - Add more tests. Usually I don't release a distribution with such few
   tests, but in this case I have. I digress.

AUTHOR

   Steve Bertrand, <steveb at cpan.org>

LICENSE AND COPYRIGHT

   Copyright 2017,2018 Steve Bertrand.

   This program is free software; you can redistribute it and/or modify it
   under the terms of either: the GNU General Public License as published
   by the Free Software Foundation; or the Artistic License.

   See http://dev.perl.org/licenses/ for more information.