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]
External resources