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