To effectively farm CocoaPods, trees are needed (the gems), and those trees need a special and unique habitat to flourish: the Rainforest.
This repository allows you to automate the tasks necessary to develop CocoaPods. In detail, the following tasks can be performed from a centralised location:
- Clone all repositories containing gems.
- Centralise bootstrapping of all the repositories.
- Switch to SSH URLs.
- Set up Bundler's Local Git Repos feature.
- Pull of all the repositories.
- Check the status of each repository, scanning for dirty working copies or gems which should be released.
To get started, simply run:
$ git clone https://github.com/CocoaPods/Rainforest.git $ cd Rainforest $ rake bootstrap
To check that the setup process worked, you can run the following command:
$ cd Rainforest $ CocoaPods/bin/pod --help
The above means that you can use the checked out version of CocoaPods for development and that you can experiment with your changes directly. If you would like CocoaPods to pick up the changes of the other checked out dependencies, you can use the local git repos features of Bundler:
$ rake local_dependencies_set
Finally, to see all the available tasks, run:
$ rake -T
rake pull: Pulls all the repos and updates the submodules.
rake cleanup: Performs safe cleanup operations, like deleting merged branches.
rake status: Prints the repositories with unmerged branches or a dirty. working copy and lists the gems with commits after the last release.
rake issues: Gets the count of the open issues.
Tasks for the Core team
rake clone_all: Clones all the CocoaPods repositories.
rake switch_to_ssh: If SSH is your fancy.
rake issues: Prints the count of the open issues for each gem.
rake release[gem_dir]: Releases the gem with the given name.
update_rubocop_configuration[gem_dir]: Update the shared CocoaPods RuboCop configuration for the given repo or for all the repos.
If you're using Rainforest to do releases on any of the CocoaPods gems, there are a few extra setup steps.
- Create a
.github_access_tokenin the root of this repo containing a GitHub access token. This is needed to create GitHub releases via the GitHub API.
options.ymlfile specifying the locations of
RubyGems. For example:
strata: ~/Development/Strata bundler: ~/Development/OpenSource/bundler rubygems: ~/Development/OpenSource/rubygems
Follow @CocoaPods to get up to date information about what's going on in the CocoaPods world.
This gem and CocoaPods are available under the MIT license.