# GithubOrgManager

A manager for Github Organizations. When onboarding onto a new organization it can be tedious to `git clone` several repos, and after joining even more annoying keeping them all up to date. This gem aims to fix both:

```ruby
require "github_org_manager"

manager = GithubOrgManager::Manager.new(
  # The name of the organization you want to manage, or
  # more accurately read from for now.
  org_name: "<YOUR_ORG_HERE>",

  # Directory where your code typically is, defaults to
  # `~/dev` and ensures it exists
  dev_home: "<WHERE_YOUR_CODE_LIVES>",

  # Params for logging into Octokit, defaulting
  # to `.netrc` login ( https://github.com/octokit/octokit.rb#using-a-netrc-file )
  octokit_params: "<PARAMS_FOR_OCTOKIT>",

  # Configuration block passed directly to
  # `Octokit.configure`
  &octokit_configuration
)

# Make sure that all the repos are currently cloned and exist in
# `dev_home/org_name/repo_name`.
manager.ensure_repo_directories_exist!

# Updates all repos by pulling latest changes after stashing existing
# changes and changing to the main branch of the repo.
#
# Note that this will run `ensure_repo_directories_exist!` to make sure
# that the directories and projects we're trying to update actually exist
manager.update_repos!
```

## Installation

Add this line to your application's Gemfile:

```ruby
gem 'github_org_manager'
```

And then execute:

    $ bundle install

Or install it yourself as:

    $ gem install github_org_manager

## Development

After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/github_org_manager. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/[USERNAME]/github_org_manager/blob/main/CODE_OF_CONDUCT.md).

## License

The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).

## Code of Conduct

Everyone interacting in the GithubOrgManager project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/baweaver/github_org_manager/blob/main/CODE_OF_CONDUCT.md).