Commit 4fefee1f authored by Eloy Duran's avatar Eloy Duran

Create an Xcode project for the platform that’s specified in the Podfile.

parent 6f2f1499
* The user *has* to specify the platform of the project in the Podfile.
* Based on the platform setting of the Podfile the appropriate xcode project template should be used.
......@@ -43,7 +43,7 @@ module Pod
end
def xcodeproj
@xcodeproj ||= Xcode::Project.ios_static_library
@xcodeproj ||= Xcode::Project.static_library(@specification.platform)
end
def generate_project
......
......@@ -223,9 +223,15 @@ module Pod
file = $LOADED_FEATURES.find { |file| file =~ %r{cocoapods/xcode/project\.rbo?$} }
TEMPLATES_DIR = Pathname.new(::File.expand_path('../../../../xcode-project-templates', file))
# TODO see if we really need different templates for iOS and OS X
def self.ios_static_library
def self.static_library(platform)
case platform
when :osx
new TEMPLATES_DIR + 'cocoa-static-library'
when :ios
new TEMPLATES_DIR + 'cocoa-touch-static-library'
else
raise "No Xcode project template exists for the platform `#{platform.inspect}'"
end
end
def initialize(template_dir)
......
......@@ -24,7 +24,8 @@ end
unless SpecHelper.fixture('integration/ASIHTTPRequest/Classes').exist?
puts "[!] You must run `git submodule update --init` for the integration spec to work, skipping."
else
describe "A full (integration spec) installation" do
[:ios, :osx].each do |platform|
describe "A full (integration spec) installation for platform `#{platform}'" do
extend SpecHelper::TemporaryDirectory
before do
......@@ -48,7 +49,8 @@ else
# TODO add a simple source file which uses the compiled lib to check that it really really works
it "should activate required pods and create a working static library xcode project" do
spec = Pod::Spec.new do |s|
spec = Pod::File.new do |s|
s.platform = platform
s.dependency 'ASIWebPageRequest', '>= 1.8.1'
s.dependency 'JSONKit', '>= 1.0'
s.dependency 'SSZipArchive', '< 2'
......@@ -77,7 +79,8 @@ else
end
it "does not activate pods that are only part of other pods" do
spec = Pod::Spec.new do |s|
spec = Pod::File.new do |s|
s.platform = platform
s.dependency 'Reachability'
end
......@@ -90,7 +93,8 @@ else
# TODO we need to do more cleaning and/or add a --prune task
it "overwrites an existing project.pbxproj file" do
spec = Pod::Spec.new do |s|
spec = Pod::File.new do |s|
s.platform = platform
s.dependency 'JSONKit'
end
installer = SpecHelper::Installer.new(spec)
......@@ -98,7 +102,8 @@ else
Pod::Source.reset!
Pod::Spec::Set.reset!
spec = Pod::Spec.new do |s|
spec = Pod::File.new do |s|
s.platform = platform
s.dependency 'SSZipArchive'
end
installer = SpecHelper::Installer.new(spec)
......@@ -108,4 +113,5 @@ else
project.source_files.sort.should == Pod::Installer.new(spec).source_files.sort
end
end
end
end
......@@ -55,7 +55,11 @@ describe "Pod::Installer" do
Pod::Source.reset!
Pod::Spec::Set.reset!
installer = Pod::Installer.new(Pod::Spec.new { |s| s.dependency(name); s.source_files = *patterns })
installer = Pod::Installer.new(Pod::Spec.new do |s|
s.platform = :ios
s.dependency(name)
s.source_files = *patterns
end)
destroot = stubbed_destroot(installer)
installer.generate_project
......
......@@ -4,7 +4,7 @@ describe "Pod::Xcode::Project" do
extend SpecHelper::TemporaryDirectory
before do
@project = Pod::Xcode::Project.ios_static_library
@project = Pod::Xcode::Project.static_library(:ios)
end
def find_objects(conditions)
......
......@@ -33,7 +33,7 @@
isa = PBXGroup;
children = (
518ACD53144605B400F6BE80 /* Pods.xcconfig */,
518ACD441446050200F6BE80 /* Pods */,
518ACD5B1446449B00F6BE80 /* Pods */,
518ACD3D1446050200F6BE80 /* Frameworks */,
518ACD3C1446050200F6BE80 /* Products */,
);
......@@ -55,20 +55,21 @@
name = Frameworks;
sourceTree = "<group>";
};
518ACD441446050200F6BE80 /* Pods */ = {
518ACD451446050200F6BE80 /* Supporting Files */ = {
isa = PBXGroup;
children = (
518ACD451446050200F6BE80 /* Supporting Files */,
518ACD461446050200F6BE80 /* Pods-Prefix.pch */,
);
name = "Supporting Files";
path = Pods;
sourceTree = "<group>";
};
518ACD451446050200F6BE80 /* Supporting Files */ = {
518ACD5B1446449B00F6BE80 /* Pods */ = {
isa = PBXGroup;
children = (
518ACD461446050200F6BE80 /* Pods-Prefix.pch */,
518ACD451446050200F6BE80 /* Supporting Files */,
);
name = "Supporting Files";
name = Pods;
sourceTree = "<group>";
};
/* End PBXGroup section */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment