CocoaPods is a great tool not only for adding open source code to your project, but also for sharing components across projects. You can use a private Spec Repo to do this.
There are a few steps to getting a private pods setup for your project; creating a private repository for them, letting CocoaPods know where to find it and adding the podspecs to the repository.
<1. Create a Private Spec Repo
To work with your collection of private pods, we suggest creating your own Spec repo. This should be in a location that is accessible to all who will use the repo.
You do not need to fork the CocoaPods/Specs Master repo. Make sure that everyone on your team has access to this repo, but it does not need to be public.
<2. Add your Private Spec Repo to your CocoaPods installation
$ pod repo add REPO_NAME SOURCE_URL
To check if your installation is successful and ready to go:
$ cd ~/.cocoapods/repos/REPO_NAME $ pod repo lint .
<3. Add your Pod's Podspec to your repo
Make sure you've tagged and versioned your source appropriately, then run:
$ pod repo push REPO_NAME SPEC_NAME.podspec
This will run pod spec lint
, and take care of all the little details for setting up the spec in your private repo.
The structure of your repo should mirror this:
. ├── Specs └── [SPEC_NAME] └── [VERSION] └── [SPEC_NAME].podspec
<That's it!
Your private Pod is ready to be used in a Podfile. You can use the spec repository with the source
directive in your Podfile as shown in the following example:
source 'URL_TO_REPOSITORY'
<An Example
<1. Create a Private Spec Repo
Create a repo on your server. This can be achieved on Github or on your own server as follows
$ cd /opt/git $ mkdir Specs.git $ cd Specs.git $ git init --bare
(The rest of this example uses the repo at https://github.com/artsy/Specs)
<2. Add your repo to your CocoaPods installation
Using the URL of your repo on your server, add your repo using
$ pod repo add artsy-specs https://github.com/artsy/Specs.git
Check your installation is successful and ready to go:
$ cd ~/.cocoapods/repos/artsy-specs $ pod repo lint .
<3. Add your Podspec to your repo
Create your Podspec
cd ~/Desktop touch Artsy+OSSUIFonts.podspec
Artsy+OSSUIFonts.podspec should be opened in the text editor of your choice. Typical contents are
Pod::Spec.new do |s| s.name = "Artsy+OSSUIFonts" s.version = "1.1.1" s.summary = "The open source fonts for Artsy apps + UIFont categories." s.homepage = "https://github.com/artsy/Artsy-OSSUIFonts" s.license = 'Code is MIT, then custom font licenses.' s.author = { "Orta" => "[email protected]" } s.source = { :git => "https://github.com/artsy/Artsy-OSSUIFonts.git", :tag => s.version } s.social_media_url = 'https://twitter.com/artsy' s.platform = :ios, '7.0' s.requires_arc = true s.source_files = 'Pod/Classes' s.resources = 'Pod/Assets/*' s.frameworks = 'UIKit', 'CoreText' s.module_name = 'Artsy_UIFonts' end
Save your Podspec and add to the repo
pod repo push artsy-specs ~/Desktop/Artsy+OSSUIFonts.podspec
Assuming your Podspec validates, it will be added to the repo. The repo will now look like this
. ├── Specs └── Artsy+OSSUIFonts └── 1.1.1 └── Artsy+OSSUIFonts.podspec
See this Podfile for an example of how the repo URL is included
<How to remove a Private Repo
pod repo remove [name]